Pandas数据分析①——数据读取(CSV/TXT/JSON)

编程入门 行业动态 更新时间:2024-10-04 19:29:30

Pandas<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据分析①——数据读取(CSV/TXT/JSON)"/>

Pandas数据分析①——数据读取(CSV/TXT/JSON)

Pandas系列目录如下:
Pandas数据分析②——数据清洗(重复值/缺失值/异常值)
Pandas数据分析③——数据规整1(索引和列名调整/数据内容调整/排序)
Pandas数据分析④——数据规整2(数据拼接/透视)
Pandas数据分析⑥——数据分析实例(货品送达率与合格率/返修率/拒收率)
Pandas数据分析⑦——数据分析实例2(泰坦尼克号生存率分析)

Pandas读取的文件主要有CSV,TXT和JSON,今天就整理了这3种文件格式的读取和导出代码,及详细的参数讲解(文末有大礼赠送

一、CSV读取和导出

1、基本参数

pd.read_csv(filepath,encoding,sep,header,names,usecols,index_col,skiprows,nrows……)
filepath:文件存储路径,可以用r""进行非转义限定,路径最好是纯英文(文件名也是),不然会经常碰到编码不对的问题,最方便是直接将文件存储在pandas默认的路径下,则直接输入文件名即可
encoding:pandas默认编码是utf-8,如果同样读取默认uft-8的txt或者json格式,则可以忽略这个参数,如果是csv,且数据中有中文时,则要指定encoding=‘gbk’
sep:指定分割符形式,CSV默认逗号分割,可以忽略这个参数,如果是其它分割方式,则要填写
header: 指定第一行是否是列名,通常有三种用法,忽略或header=0(表示数据第一行为列名),header=None(表明数据没有列名),常与names搭配使用
names: 指定列名,通常用一个字符串列表表示,当header=0时,用names可以替换掉第数据中的第一行作为列名,如果header=None,用names可以增加一行作为列名,如果没有header参数时,用names会增加一行作为列名,原数据的第一行仍然保留
usecols:一个字符串列表,可以指定读取的列名
index_col: 一个字符串列表,指定哪几列作为索引
skiprows: 跳过多少行再读取数据,通常是数据不太干净,需要去除掉表头才会用到
nrows: 仅读取多少行,后面的处理也都仅限于读取的这些行

2、读取代码
① 用header=0或忽略header,读取数据一模一样

data = pd.read_csv('data.csv',encoding='gbk',header=0)
print(data.head())

data = pd.read_csv('data.csv',encoding='gbk')
print(data.head())


② 加上header=None,会默认添加上从0开始的列;

data = pd.read_csv('data.csv',encoding='gbk',header=None)
print(data.head())


③ 如果数据本来有列名,则忽略header这个参数即可,如果本身没有列名,或者有但是想替换,用names替换

data = pd.read_csv('data.csv',encoding='gbk',header=0,names=list('abcdefghij'))
print(data.head())


④ 想指定订单号和订单行为索引,用index_col

data = pd.read_csv('data.csv',encoding='gbk',header=0,index_col=['订单号', '订单行'])
print(data.head())


⑤ 想仅读取订单号和订单行,用usecols

data = pd.read_csv('data.csv',encoding='gbk',header=0, usecols=['订单号','订单行'])
print(data.head())


⑥想仅读取前100行数据,用nrows

data = pd.read_csv('data.csv',encoding='gbk',header=0,index_col=['订单号', '订单行'],nrows=3)
print(data.head())


⑦ 想跳过前100行数据,用skiprows,记得要加上names指定列名, 不然会默认剩下的第一行数据为列名

data = pd.read_csv('data.csv',encoding='gbk',skiprows=100,names=list('abcdefghij'))
print(data.head())


3、导出代码

data.to_csv('data1.csv', encoding='gbk',columns=list('abcd'),header=False,index=False)


注意事项:
columns可以指定存入的子集,index=False和header=False,是指不存入行索引和列索引

二、TXT读取和导出

1、基本参数
pd.read_table()
参数与csc一致,其中要注意的是txt格式可能会有多种分割符号,sep用正则表达式’\s+’,可以匹配多种分割符号

2、读取代码

data = pd.read_table('data.txt',sep='\s+',encoding='utf-8',header=0,names='abcdefghij',index_col=['a','b'],usecols=list('abcdefg'))
print(data.head())


3、导出代码
与csv一致,只是输入文件格式由csv改为txt即可

data = pd.read_table('data.txt',sep='\s+',encoding='utf-8',header=0,names='abcdefghij',index_col=['a','b'],usecols=list('abcdefg'))
print(data.head())
data.to_csv('data1.txt', sep='\t', header=True,index=True)

三、JSON读取和导出

①python自带方式

先用with open打开文件,然后用json.loads将文件读取到data中,最后用pd_Dataframe转换成Dataframe格式即可

with open('data.json') as f:data = json.loads(f.read())data1 = pd.DataFrame(data,columns=['订单号','订单行', '销售时间', '交货时间', '销售金额'])
print(data1.head())

② pandas读取方式

pd.read_json(filepath,orient,typ…)
filepath:与其余2种一样
orient: 可选择 split,index,column,value,records,None,区别在于数据的组成结果不同
split—— dict like {index -> [index], columns -> [columns], data -> [values]}
有索引,有列字段,和数据矩阵构成的json格式。key名称只能是index,columns和data,不能省略

data = '{"index":[1,2], "columns": ["a","b"],"data": [[1,2],[4,5]]}'
data = pd.read_json(data,orient='split')print(data.head())


records: list like [{column -> value}, … , {column -> value}]
最常见的就是列表,列表中的每一项都是列字段与值构成的字典,可省略

data = '[{"a":1, "b":2},{"a": 2,"b": 4}]'
data = pd.read_json(data,orient='records')
print(data.head())


index or column:dict like {index -> {column -> value}} or {column -> {index -> value}}
词典嵌套,index则指定外键为索引,内键为列,column相反,不能省略

data = '{"a":{"haha":1, "lolo":2},"b": {"haha": 2,"lolo": 4}}'
data = pd.read_json(data,orient='index')
print(data.head())

data = '{"a":{"haha":1, "lolo":2},"b": {"haha": 2,"lolo": 4}}'
data = pd.read_json(data,orient='columns')
print(data.head())


values: 就是最常见的嵌套列表,可省略

data = '[[1,2], [3,4],[5,6]]'
data = pd.read_json(data,orient='values')
print(data.head())

2、读取代码
json文件属于values格式,可省略orient参数

 data = pd.read_json('data.json',orient='values')
print(data.head())


3、导出代码
导出跟读取一样,可以通过orient参数设定上述几种你想要存储的格式,且读取和存储的orient可以完全不一样

data = '{"index":[1,2], "columns": ["a","b"],"data": [[1,2],[4,5]]}'
data = pd.read_json(data,orient='split')
print(data.head())
data.to_json('data2.json',orient='records')

data = '[{"a":1, "b":2},{"a": 2,"b": 4}]'
data = pd.read_json(data,orient='records')
print(data.head())
data.to_json('data2.json',orient='values')

data = '{"a":{"haha":1, "lolo":2},"b": {"haha": 2,"lolo": 4}}'
data = pd.read_json(data)
print(data.head())
data.to_json('data2.json',orient='index')

data = '[[1,2], [3,4],[5,6]]'
data = pd.read_json(data,orient='values')
print(data.head())
data.to_json('data2.json',orient='split')

本人互联网数据分析师,目前已出Excel,SQL,Pandas,Matplotlib,Seaborn,机器学习,统计学,个性推荐,关联算法,工作总结系列。


**微信搜索 " 数据小斑马" 公众号,回复“data"就可以获取文中数据,方便你实操一遍。

更多推荐

Pandas数据分析①——数据读取(CSV/TXT/JSON)

本文发布于:2024-02-13 15:01:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758884.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   Pandas   CSV   JSON   TXT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!