程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

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

发布于2019-08-06 10:37     阅读(1130)     评论(0)     点赞(1)     收藏(5)


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')

在这里插入图片描述

其余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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)