pandas学习记录

来源:互联网 发布:stc12c2052ad数据手册 编辑:程序博客网 时间:2024/05/17 02:03

1.模块导入

import pandas as pd

2.pandas序列Series自动给列表加上索引

   如 a = [1,2,3,4]

        b = pd.Series(a)

        c = enumerate(a)

print b  

类似于  

for i,j in c:

    print i,j

3.numpy 只是纯碎的生成矩阵数组, 而 pandas 可以给numpy 生成的多维数组的 各行 各列加上一个名称

4.产生一个时间序列: 

   date= pd.date_range('20170101',periods = 7)

4.1给一个二位数则每行每列定义一个名称

df= pd.DataFrame(np.random.randn(7,4),index=date,columns=['a','b','c','d']

DataFrame就是给二维数组的每行每列加一个标签

注意:a = np.array([1,2,3,4]) 用于DataFrame则表示4行1列

            a = np.array([[1,2,3,4]])用于DataFrame则表示1行4列

5.如果使用字典dict来初始化DataFrame,则字典的key会成为二维数组的列索引,行索引则自动生成

6.获取df行索引 df.index

6.获取df列索引 df.columns

6.获取df值         df.values, 得到numpy形式的数组

7.df.describe()会计算df各列的均值和标准差,

应用举例:

             df = pd.DataFrame(np.random.randn(3,4))

     d1 = df.describe()

             d2 = d1.values

             d3 = d2.T

             d4= d3[0]   即可以得到第一列的均值,标准差

8.对df进行排序

 df.sort_index(axis=0,ascending=False)  行索引降序排列

df.sort_index(axis=1,ascending=False)  列索引降序排列


9.对df进行选择输出

   输出某列 : ‘a’列      df.a 或 df['a']  

   输出多列:   df.loc[:,['a','b']] 

   输出某行:  df[0:3]  输出0到3行    , 以标签输出 df.loc['20170101']

   输出某行某列: 以标签输出 df.loc['20170101',['a','b']]

   输出某个元素: 

,纯数字筛选

df.iloc[3,1] 3行1列  

                df.iloc[1:2,1:2] 1到2行,1到2列 

 df.iloc[[1,3],1:2] 1行,3行,1列到2列 

标签筛选:

         df.ix[:2,['a','b']]   ,数字加标签筛选

         df[df.a>2],选出a列中大于2的行,同时显示所有列                 


10 .给DataFrame赋值:

     更改某一个元素:

     df.iloc[2,1]=12    第二行第一列赋值12

     df.loc['20170101','a'] =12 , 以标签更改

     更改某一列元素:

     df.a = 0  第‘a’列全部为0

     df.a.[df.a >2]=0  第‘a’列大于2的元素全为0

     df.b.[df.a >2]=0  第‘a’列大于2的元素对应的b列的元素全为0 ,a列不变,b列改变

     更改某一列元素,影响其它列:

     df[df.a >2] = 0,第‘a’列大于2的元素全为0,其它对应的列也受到影响全部为0 


11,给DataFrame新增行列:

     df原有a,b,c,d列   , 0到7行

    增加1列: df['e'] = np.nan

    增加1列: df['e'] = [1,2,3,4,5,6,7]

    增加1列:df['e'] = pd.Series([1,2,3,4,5,6,7],index=pd.date_range('20170101',periods=6))  

    增加一行:

    df1 = pd.DataFrame(np.ones(3,4),columns=['a','b','c','d'])

   或 df1 = pd.Series([1,2,3,4],index=['a','b','c','d'])

    df.append(df1,ignore_index=True)


12.去掉df中元素为nan的行列

     如果df中有元素为空即nan

     df.dropna(axis = 0,how='any') 丢掉元素为空的行

     df.dropna(axis = 1,how='any') 丢掉元素为空的列

13. 处理df中元素为空

     将df中元素为nan统一赋个值:

     df.fillna(value=0) 将为nan的元素赋值为0

      判断df是否缺失数据,即存在nan , 使用: df.isnull()查看

     使用  np.any(df.isnull())==True 判断df中是否有nan


14.多个DataFrame合并

    numpy 中的多维数组的合并使用:concatenate,hstack,vstack

   DataFrame使用cancat

  例如: df1, df2的行列都是3行4列,其行标志和列标志都相同。

  则合并df1 ,df2 使用 pd.concat([df1,df2],axis=0,ignore_index=True)  纵向合并


   例如:合并df1, df2 相同的列,不同的列舍弃,则使用 pd.concat([df1,df2],join='inner',ignore_index=True)

   例如:合并df1 ,df2 使用 pd.concat([df1,df2],axis=1,join_axes=[df1.index])  水平合并,并使用df1的index

   

    例如:df1,和 df2 有一列完全一样,如df1 是 ‘a’,'b','c','d',df2是‘d’,'e','f','g'。 则以‘d’列作为参考合并两个DataFrame,得到'a','b','c','d','e','f','g'。使用:pd.merge(df1,df2,on='d')