软件应用丨Pandas入门系列(二):Pandas io操作
版权声明:本文为CSDN博主「向前走别回头」与「墨岚❤️」的原创文章合集,遵循 CC 4.0 BY-SA 版权协议,特此附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/weixin_39778570/article/details/81078684
https://blog.csdn.net/ly_ysys629/article/details/55107237
昨天我们为大家介绍了Series和DataFrame,点此回顾
Pandas io操作
>>> import numpy as np
>>> import pandas as pd
>>> from pandas import Series, DataFrame
>>> import webbrowser
#打开官网,里面有io操作的详细介绍
>>> link = 'http://pandas.pydata.org/pandas-docs/version/0.20/io.html'
>>> webbrowser.open(link)
# 从粘粘板读取数据
>>> df1 = pd.read_clipboard()
# 把数据放入到粘粘板中,数据可以直接粘粘到excel文件中
>>> df1.to_clipboard()
# 读写csv文件,可以取消index
>>> df1.to_csv('df1.csv')
>>> df1.to_csv('df1.csv', index = False)
>>> df2 = pd.read_csv('df1.csv')
# 转化为json格式
>>> df1.to_json()
# 读取json
>>> pd.read_json(df1.to_json())
# 转化为html格式
>>> df1.to_html('df1.html')
# 装换为excel格式
>>> df1.to_excel('df1.xlsx')
左右滑动查看更多
更多操作
read_csv,
read_excel,
read_hdf,
read_sql,
read_json,
read_msgpack (experimental),
read_html,
read_gbq (experimental),
read_stata,
read_sas,
read_clipboard,
read_pickle;
相应的写入:
to_csv,
to_excel,
to_hdf,
to_sql,
to_json,
to_msgpack (experimental),
to_html,
to_gbq (experimental),
to_stata,
to_clipboard,
to_pickle.
左右滑动查看更多
常用参数的读取csv文件
import pandas as pd
obj=pd.read_csv('f:/ceshi.csv')
print obj
print type(obj)
print obj.dtypes
Unnamed: 0 c1 c2 c3
0 a 0 5 10
1 b 1 6 11
2 c 2 7 12
3 d 3 8 13
4 e 4 9 14
<class 'pandas.core.frame.DataFrame'>
Unnamed: 0 object
c1 int64
c2 int64
c3 int64
dtype: object
ceshi.csv为有列索引没有行索引的数据,read_csv会自动加上行索引,即使原数据集有行索引。
read_csv读取的数据类型为Dataframe,obj.dtypes可以查看每列的数据类型
obj_2=pd.read_csv('f:/ceshi.csv',header=None,names=range(2,5))
print obj_2
2 3 4
0 c1 c2 c3
1 0 5 10
2 1 6 11
3 2 7 12
4 3 8 13
5 4 9 14
header=None时,即指明原始文件数据没有列索引,这样read_csv为自动加上列索引,除非你给定列索引的名字。
obj_2=pd.read_csv('f:/ceshi.csv',header=0,names=range(2,5))
print obj_2
2 3 4
0 0 5 10
1 1 6 11
2 2 7 12
3 3 8 13
4 4 9 14
header=0,表示文件第0行(即第一行,python,索引从0开始)为列索引,这样加names会替换原来的列索引。
obj_2=pd.read_csv('f:/ceshi.csv',index_col=0)
print obj_2
c1 c2 c3
a 0 5 10
b 1 6 11
c 2 7 12
d 3 8 13
e 4 9 14
obj_2=pd.read_csv('f:/ceshi.csv',index_col=[0,2])
print obj_2
c1 c3
c2
a 5 0 10
b 6 1 11
c 7 2 12
d 8 3 13
e 9 4 14
index_col为指定数据中那一列作为Dataframe的行索引,也可以可指定多列,形成层次索引,默认为None,即不指定行索引,这样系统会自动加上行索引(0-)
obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,usecols=[0,1,2,3])
print obj_2
c1 c2 c3
a 0 5 10
b 1 6 11
c 2 7 12
d 3 8 13
e 4 9 14
obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,usecols=[1,2,3])
print obj_2
c2 c3
c1
0 5 10
1 6 11
2 7 12
3 8 13
4 9 14
usecols:可以指定原数据集中,所使用的列。在本例中,共有4列,当usecols=[0,1,2,3]时,即选中所有列,之后令第一列为行索引,当usecols=[1,2,3]时,即从第二列开始,之后令原始数据集的第二列为行索引。
obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,nrows=3)
print obj_2
c1 c2 c3
a 0 5 10
b 1 6 11
c 2 7 12
nrows:可以给出从原始数据集中的所读取的行数,目前只能从第一行开始到nrows行。
datetime handing 数据中日期处理
obj_3=pd.read_csv('f:/ceshi_date.csv',index_col=0,)
print obj_3
print type(obj_3.index)
A B C
date
20090101 a 2 3
20090102 b 3 4
20090103 c 4 5
<class 'pandas.indexes.numeric.Int64Index'>
obj_3=pd.read_csv('f:/ceshi_date.csv',index_col=0,parse_dates=True)
print obj_3
print type(obj_3.index)
A B C
date
2009-01-01 a 2 3
2009-01-02 b 3 4
2009-01-03 c 4 5
<class 'pandas.tseries.index.DatetimeIndex'>
parse_dates=True:可令字符串解析成时间格式。
data='date,value,cat\n1/6/2000,5,a\n2/6/2000,10,b\n3/6/2000,15,c'
print data
date,value,cat
1/6/2000,5,a
2/6/2000,10,b
3/6/2000,15,c
from StringIO import StringIO
print pd.read_csv(StringIO(data),parse_dates=[0],index_col=0)
value cat
date
2000-01-06 5 a
2000-02-06 10 b
2000-03-06 15 c
print pd.read_csv(StringIO(data),parse_dates=[0],index_col=0,dayfirst=True)
value cat
date
2000-06-01 5 a
2000-06-02 10 b
2000-06-03 15 c
US常用时间格式:MM/DD/YYYY,dayfirst=True:可将其改为DD/MM/YYYY
分隔符和阈值
tem='id|level|category\npatient1|123,000|x\npatient2|23,000|y\npatient3|1,234,018|z'
print tem
id|level|category
patient1|123,000|x
patient2|23,000|y
patient3|1,234,018|z
print pd.read_csv(StringIO(tem),sep='|')
id level category
0 patient1 123,000 x
1 patient2 23,000 y
2 patient3 1,234,018 z
print pd.read_csv(StringIO(tem),sep='|',thousands=',')
id level category
0 patient1 123000 x
1 patient2 23000 y
2 patient3 1234018 z
官网:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
英文原文:
·END·
软件应用丨超强干货!Numpy简单使用(入门)
软件应用丨Python数据分析,学习路径拆解及资源推荐(附详细思维导图)
机器学习丨经济学研究中的机器学习:回顾与展望
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
出处:CSDN作者:向前走别回头 墨岚❤️推荐:青酱排版编辑:青酱
欢迎扫描👇二维码添加关注