Pandas进阶大神!从0到100你只差这篇文章!(一)


数据对象


pandas主要有两种数据对象:Series、DataFrame


注: 后面代码使用pandas版本0.20.1,通过import pandas as pd引入


1. Series


Series是一种带有索引的序列对象。


简单创建如下:


# 通过传入一个序列给pd.Series初始化一个Series对象, 比如lists1=pd.Series(list("1234"))print(s1)0    11    22    33    4dtype:object


2. DataFrame


类似与数据库table有行列的数据对象。


创建方式如下:


# 通过传入一个numpy的二维数组或者dict对象给pd.DataFrame初始化一个DataFrame对象
# 通过numpy二维数组import numpy as npdf1 = pd.DataFrame(np.random.randn(6,4))print(df1)    0   1   2   30   -0.646340   -1.249943   0.393323    -1.5618731   0.371630    0.069426    1.693097    0.9074192   -0.328575   -0.256765   0.693798    -0.7873433   1.875764    -0.416275   -1.028718   0.1582594   1.644791    -1.321506   -0.337425   0.8206895   0.006391    -1.447894   0.506203    0.977295
# 通过dict字典df2 = pd.DataFrame({ 'A' : 1.,                     'B' : pd.Timestamp('20130102'),                                                                     'C' :pd.Series(1,index=list(range(4)),dtype='float32'),                      'D' : np.array([3] * 4,dtype='int32'),                                                               'E' : pd.Categorical(["test","train","test","train"]),                                          'F' : 'foo' })print(df2)
    A   B   C   D   E   F0   1.0 2013-01-02  1.0 3   test    foo1   1.0 2013-01-02  1.0 3   train   foo2   1.0 2013-01-02  1.0 3   test    foo3   1.0 2013-01-02  1.0 3   train   foo


3. 索引


不管是Series对象还是DataFrame对象都有一个对对象相对应的索引,Series的索引类似于每个元素, DataFrame的索引对应着每一行。


查看:在创建对象的时候,每个对象都会初始化一个起始值为0,自增的索引列表, DataFrame同理。


# 打印对象的时候,第一列就是索引print(s1)0    11    22    33    4dtype: object
# 或者只查看索引, DataFrame同理print(s1.index)


增删查改


这里的增删查改主要基于DataFrame对象,为了有足够数据用于展示,这里选择tushare的数据。


1. tushare安装

ipinstall tushare


创建数据对象如下:


import tushare as tsdf = ts.get_k_data("000001")


DataFrame 行列,axis 图解:


Pandas进阶大神!从0到100你只差这篇文章!(一)


Pandas进阶大神!从0到100你只差这篇文章!(一)


2. 查询


查看每列的数据类型


# 查看df数据类型df.dtypesdate       objectopen        float64close        float64high         float64low          float64volume    float64code       objectdtype: object


查看指定指定数量的行:head函数默认查看前5行,tail函数默认查看后5行,可以传递指定的数值用于查看指定行数。


查看前5行df.head()date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   0000011   2015-12-24  9.919   9.823   9.998   9.744   640229.0    0000012   2015-12-25  9.855   9.879   9.927   9.815   399845.0    0000013   2015-12-28  9.895   9.537   9.919   9.537   822408.0    0000014   2015-12-29  9.545   9.624   9.632   9.529   619802.0    000001# 查看后5行df.tail()date    open    close   high    low volume  code636 2018-08-01  9.42    9.15    9.50    9.11    814081.0    000001637 2018-08-02  9.13    8.94    9.15    8.88    931401.0    000001638 2018-08-03  8.93    8.91    9.10    8.91    476546.0    000001639 2018-08-06  8.94    8.94    9.11    8.89    554010.0    000001640 2018-08-07  8.96    9.17    9.17    8.88    690423.0    000001# 查看前10行df.head(10)date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   0000011   2015-12-24  9.919   9.823   9.998   9.744   640229.0    0000012   2015-12-25  9.855   9.879   9.927   9.815   399845.0    0000013   2015-12-28  9.895   9.537   9.919   9.537   822408.0    0000014   2015-12-29  9.545   9.624   9.632   9.529   619802.0    0000015   2015-12-30  9.624   9.632   9.640   9.513   532667.0    0000016   2015-12-31  9.632   9.545   9.656   9.537   491258.0    0000017   2016-01-04  9.553   8.995   9.577   8.940   563497.0    0000018   2016-01-05  8.972   9.075   9.210   8.876   663269.0    0000019   2016-01-06  9.091   9.179   9.202   9.067   515706.0    000001


查看某一行或多行,某一列或多列


# 查看第一行df[0:1]    date    open    close   high    low volume  code0   2015-12-23  9.927   9.935   10.174  9.871   1039018.0   000001
# 查看 10到20行df[10:21]    date    open    close   high    low volume  code10  2016-01-07  9.083   8.709   9.083   8.685   174761.0    00000111  2016-01-08  8.924   8.852   8.987   8.677   747527.0    00000112  2016-01-11  8.757   8.566   8.820   8.502   732013.0    00000113  2016-01-12  8.621   8.605   8.685   8.470   561642.0    00000114  2016-01-13  8.669   8.526   8.709   8.518   391709.0    00000115  2016-01-14  8.430   8.574   8.597   8.343   666314.0    00000116  2016-01-15  8.486   8.327   8.597   8.295   448202.0    00000117  2016-01-18  8.231   8.287   8.406   8.199   421040.0    00000118  2016-01-19  8.319   8.526   8.582   8.287   501109.0    00000119  2016-01-20  8.518   8.390   8.597   8.311   603752.0    00000120  2016-01-21  8.343   8.215   8.558   8.215   606145.0    000001
# 查看看Date列前5个数据df["date"].head() # 或者df.date.head()0    2015-12-231    2015-12-242    2015-12-253    2015-12-284    2015-12-29Name: date, dtype: object
# 查看看Date列,code列, open列前5个数据df[["date","code", "open"]].head()    date    code    open0   2015-12-23  000001  9.9271   2015-12-24  000001  9.9192   2015-12-25  000001  9.8553   2015-12-28  000001  9.8954   2015-12-29  000001  9.545
上一篇:从0到1手把手教你实现一个 Python 多线程下载器(二)


下一篇:新手折腾Linux需要知道的?