发布于2019-08-06 10:37 阅读(1277) 评论(0) 点赞(1) 收藏(5)
Pandas读取的文件主要有CSV,TXT和JSON,今天就整理了这3种文件格式的读取和导出代码,及详细的参数讲解
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,是指不存入行索引和列索引
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)
①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')
其余pandas文章如下,后续还会继续出numpy,matplotlib,机器学习等数据分析必备技能,感兴趣的小伙伴可关注下我喔
Pandas数据分析②——数据清洗(重复值/缺失值/异常值)
Pandas数据分析③——数据规整1(索引和列名调整/数据内容调整/排序)
Pandas数据分析④——数据规整2(数据拼接/透视)
Pandas数据分析⑤——数据分组与函数使用(Groupby/Agg/Apply/mean/sum/count)
Pandas数据分析⑥——数据分析实例(货品送达率与合格率/返修率/拒收率)
Pandas数据分析⑦——数据分析实例2(泰坦尼克号生存率分析)
作者:无敌是多么寂寞
链接:https://www.pythonheidong.com/blog/article/7786/2a6454850c5aaf0c086d/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!