Python数据分析_Pandas04_本地数据的导入导出

2017-02-03  本文已影响11962人  ChZ_CC

主要内容:


本地数据的IO操作

pandas可以很方便的读取/存储各种格式的本地文件,读取用read_xx(),写入用to_xx()

读取                            写入
read_csv                        to_csv
read_excel                      to_excel
read_hdf                        to_hdf
read_sql                        to_sql
read_json                       to_json
read_msgpack (experimental)     to_msgpack (experimental)                
read_html                       to_html
read_gbq (experimental)         to_gbq (experimental)            
read_stata                      to_stata
read_sas                        
read_clipboard                  to_clipboard    
read_pickle                     to_pickle

上面是官方文档列出来的用来读取数据的方法,支持好多格式的数据呢。有些我都没见过没听说,我有用到的有csv, excel, json, pickle等。它们的用法都差不多,而且特别简单。以read_csv()为主简单介绍一下pandas读取和存储数据的方法。

pd.read_csv()

基本用法

In [1]: import pandas as pd
In [4]: data = pd.read_csv('D:/test.csv')
In [5]: data.head()
Out[5]:
        Date      Open      High       Low     Close        Volume  Adj Close
0  2011/5/25  12355.45  12462.28  12271.90  12394.66  4.109670e+09   12394.66
1  2011/5/24  12381.87  12465.80  12315.42  12356.21  3.846250e+09   12356.21
2  2011/5/23  12511.29  12511.29  12292.49  12381.26  3.255580e+09   12381.26
3  2011/5/20  12604.64  12630.11  12453.96  12512.04  4.066020e+09   12512.04
4  2011/5/19  12561.46  12673.78  12506.67  12605.32  3.626110e+09   12605.32

什么参数都不设置的情况就是这样,读取进来之后是dataframe格式,自动生成数字索引。

它的参数特别多!!!

种种参数

列、列名和索引

时间数据处理

啊,惊艳了时光!就问你棒不棒,棒 不 棒 !!

解析配置(好多的,我挑几个可能会用的)

空值和NA处理

啊,还有引用、注释、字符格式等等参数,一般不会到那么细枝末节的地步,不说了。

read_csv()read_table()几乎相等,不单单可以读取以逗号分割的CSV格式,你可以通过设置sep参数让它读取各种不同分割符号的文本文件等等。

可用参数是很多,但这个方法用起来很简单。唯一一个必须的参数就是需要读取文件的路径/地址。写入和读取类似,用法都一样。
下面的几个方法我就不再解释参数,其实都类似的,直接举几个例子看看好了。

pd.to_csv()

In [2]: import pandas as pd
      : data = pd.read_csv('D:/test.csv',index_col='Date',parse_dates=True)
      :
      
In [5]: data[:5]
Out[5]:
                Open      High       Low     Close        Volume  Adj Close
Date
2011-05-25  12355.45  12462.28  12271.90  12394.66  4.109670e+09   12394.66
2011-05-24  12381.87  12465.80  12315.42  12356.21  3.846250e+09   12356.21
2011-05-23  12511.29  12511.29  12292.49  12381.26  3.255580e+09   12381.26
2011-05-20  12604.64  12630.11  12453.96  12512.04  4.066020e+09   12512.04
2011-05-19  12561.46  12673.78  12506.67  12605.32  3.626110e+09   12605.32

#把data中Open和Close列的前五行写入to.csv文件中。
In [9]: data[:5].to_csv('D:/to.csv', columns=['Open','Close'])

In [10]: data2 = pd.read_csv('D:/to.csv')
#把刚生成的to.csv再读进来看看对不对。

In [11]: data2
Out[11]:
         Date      Open     Close
0  2011-05-25  12355.45  12394.66
1  2011-05-24  12381.87  12356.21
2  2011-05-23  12511.29  12381.26
3  2011-05-20  12604.64  12512.04
4  2011-05-19  12561.46  12605.32

pd.read_excel()

In [19]: excel = pd.read_excel('D:/test.xlsx', sheetname='Sheet1')

In [20]: excel.head(2)
Out[20]:
   Month  Day  Year    gas  crude oil
0      1    3  1997  22.90      1.225
1      1   10  1997  23.56      1.241

In [21]: excel['Date']=pd.to_datetime(excel[['Year','Month','Day']])

In [22]: excel = excel.set_index("Date")

In [23]: excel.head(2)
Out[23]:
            Month  Day  Year    gas  crude oil
Date
1997-01-03      1    3  1997  22.90      1.225
1997-01-10      1   10  1997  23.56      1.241

pd.read_pickle & pd.to_pickle

pickle这个用起来特别简单,根本就没有其他参数。它比较特殊的是可以实现将数据或对象序列化为字节流,pickling也就是保存为二进制数,unpickling就是相反的过程。pickle的意思是泡菜,把数据泡起来之后就可以长久存放不容易变质,pickle被当做永久储存数据的一个方法。

我见过用pickle保存数据是在机器学习中。把训练好的模型存成pickle文件,下次使用这个模型的时候直接读取pickle文件,而不需要再次训练。

上一篇下一篇

猜你喜欢

热点阅读