zoukankan      html  css  js  c++  java
  • Pandas 第二部分

      1 import numpy as np
      2 import pandas as pd
      3 
      4 df = pd.read_excel("d:/test.xlsx")
      5 if 0 :
      6     print(df.dtypes)  #查看数据的列的类型
      7     pass
      8 
      9 #查找一个条目 并删除
     10 if 0:
     11     # 查找一个条目
     12     print(df[(df['年龄'] == 18) & (df['姓名'] == '李四')])
     13     # 删除它
     14     df.drop([62], inplace=True)
     15     print(df[60:64])  # 发现62 已经没有了
     16 
     17     #因为上面删除了一些条目,所以index 就不会连续了
     18     #然后重新更新它的index
     19     df.index = range(len(df))
     20 
     21 #数据格式的  查看(dtype ) 与 装换 astype()
     22 if 0:
     23     #查看格式  dtype
     24     if 0:
     25         print(df["年龄"].dtype )  #int64
     26         print(df['姓名'].dtype)   #object
     27         print(df["学号"].dtype )  #int64
     28         print(df["工资"].dtype )  #float64
     29         pass
     30     #将年龄转为 浮点格式 astype()
     31     if 0:
     32         df['年龄'] = df['年龄'].astype(float) #默认指的是float64
     33         print(df.dtypes)
     34         pass
     35     #将工资转为整数格式  astype()
     36     if 0:
     37         df['工资'] = df['工资'].astype(int)  #int 指的是int32
     38         print(df.dtypes)
     39         pass
     40     pass
     41 
     42 #排序
     43 if 0:
     44     #默认排序
     45     if 0:
     46         #默认排序是按照index 来的
     47         pass
     48     #按照年龄排序
     49     if 0:
     50         if 0:
     51             print( df.sort_values(by='年龄') )   #默认是升序
     52         #降序排列
     53         print(df.sort_values(by='年龄',ascending = False) )
     54 
     55         pass
     56     #按照学号排序
     57     if 0:
     58         print(df.sort_values(by='学号',ascending = False ))
     59         pass
     60 
     61     #多个值排序 ,先按照学号 ,再按照年龄
     62     if 0:
     63         print( df.sort_values(by=['学号','年龄'])  )
     64         pass
     65 
     66 
     67 
     68     pass
     69 
     70 #基本统计分析
     71 if 0:
     72     # 1,描述性统计
     73     if 0:
     74         res = df.describe()  #对df 中的数值提供描述性统计
     75         print(res)
     76         #而且,我们往往还可以在描述性统计中的极值中发现异常的数值
     77         pass
     78     # 2,最值
     79     if 0:
     80         ret = df['年龄'].min()
     81         print(ret)
     82 
     83         ret = df['年龄'].max()
     84         print(ret)
     85 
     86         ret = df['工资'].min()
     87         print(ret)
     88 
     89         ret = df['工资'].max()
     90         print(ret)
     91         pass
     92     # 3,均值和中值
     93     if 0:
     94         ret = df['年龄'].mean()
     95         print(ret)
     96 
     97         ret = df['年龄'].median()
     98         print(ret)
     99 
    100         pass
    101     # 4,方差和标准差
    102     if 0:
    103         ret = df['工资'].var() #方差
    104         print(ret)
    105 
    106         ret = df['工资'].std() #方差 = 标准差的平方
    107         print(ret )
    108         pass
    109     # 5,求和
    110     if 0:
    111         ret = df['工资'].sum()
    112         print(ret)
    113         pass
    114     # 6,相关系数,协方差   #这就涉及到两个变量了
    115     if 0:
    116         ret = df[['年龄','工资' ]].corr()  #相关系数
    117         print(ret)
    118 
    119         ret = df[['年龄','工资']].cov()  #协方差
    120         print(ret)
    121 
    122         pass
    123     # 7,计数
    124     if 1:
    125         #算多少行
    126         if 0:
    127             ret = len(df)
    128             print(ret)
    129         if 0:
    130             #算有多少个人
    131             ret = df['姓名'].unique()
    132             print(ret)
    133             print(len(ret))  #9 个人
    134 
    135             if 0:  # 现在要解决  张三和 张昌博是同一个人的问题 ,
    136                 df['姓名'].replace('张三','张昌博',inplace=True    )
    137                 ret = df['姓名'].unique()
    138                 print(ret)  #这时就得到了 正确的所有的人
    139 
    140                 #一次替换多个值  (用列表表示  )
    141                 if 0 :
    142                     df['姓名'].replace(['张昌博','李四'],['张三','李大四'],inplace=True)
    143                     print(df['姓名'].unique())
    144                 pass
    145 
    146             pass
    147 
    148         if 0:
    149             #算出每个姓名都有多少行  value_counts()
    150             ret = df['姓名'].value_counts()  #默认是从大到小
    151             print(ret)
    152             pass
    153         pass
    154     pass
    155 
    156 #保存数据
    157 if 0:
    158     df.to_excel("d:/test03.xlsx")
    159     pass
    160 
    161 
    162 #数据透视
    163 if 0:
    164     #Excel 的数据透视表使用的非常广泛 ,Pandas 也提供了数据透视表的功能,名为pivot_table 。
    165 
    166     #1,基本形式
    167     if 0:
    168         ret = pd.pivot_table(df,index=['学号'])
    169         #默认进行的聚合计算是  均值计算
    170         print(ret)
    171         #如何解决显示不全的问题
    172         if 0:
    173             pd.set_option('max_columns',100) #最大 100 列
    174             pd.set_option('max_rows',500)  #最大 500行
    175             print(ret)
    176 
    177 
    178 
    179         pass
    180     # 2,也可以有多个索引。实际上,大多数的pivot_table 参数可以通过列表获取多个值
    181     if 0:
    182         ret = pd.pivot_table(df,index = ['学号','姓名'])
    183         print(ret)
    184         pass
    185 
    186     # 3,也可以制定需要统计汇总的数据
    187     if 0:
    188         #在 2 的基础上  ,但是我们只需要工资那一列就好了
    189         ret = pd.pivot_table(df,index=['学号','姓名'],values='工资')
    190         print(ret)
    191         pass
    192     # 4,还可以指定函数,来统计不同的统计值
    193     if 0:
    194         #注意:aggfunc 去制定  计算的方式,默认是取 平均值
    195         if 0:
    196             ret = pd.pivot_table(df,index=['学号','姓名'],values='工资',aggfunc=np.sum )
    197             print(ret)
    198             pass
    199 
    200         if 0:
    201             #values 也可以是多个
    202             ret = pd.pivot_table(df,index='姓名',values=['年龄','工资'],aggfunc=np.sum)
    203             print(ret)
    204             pass
    205 
    206     # 5,非数值NaN  难以处理 ,如果要移除它们 ,可以使用“fill_value ” 将其设置为0
    207     if 0:
    208         #aggfunc 也可以是多个
    209         if 0:
    210             ret = pd.pivot_table(df,index=['姓名'],aggfunc=[np.sum,np.mean])
    211             print(ret)
    212 
    213         ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],fill_value=0)
    214         print(ret)
    215         pass
    216     # 6,加入margins = True  可以在下方显示一些总和数据
    217     if 0:
    218         ret = pd.pivot_table(df,index='姓名',aggfunc=[np.sum],margins=True)
    219         print(ret)
    220         pass
    221     pass
    222     # 7,对不同值执行不同的函数:可以向 aggfunc传递一个字典。不过,这样有个副作用,就是必须将标签做的更加简洁才行
    223     if 0:
    224         #对工资求综合 ,对年龄求均值
    225         ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean })
    226         print(ret)
    227         pass
    228 
    229 #数据透视表的过滤
    230 if 0:
    231     ret = pd.pivot_table(df,index='姓名',values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} )
    232     # print(ret)
    233     # print(type(ret))  #<class 'pandas.core.frame.DataFrame'>
    234 
    235     if 0:
    236         print(ret[:5]) #前 五行
    237         pass
    238     if 0:
    239         ret = ret [ ret.index == '张昌博']
    240         print(ret)
    241 
    242     if 0:
    243         ret = ret.sort_values('工资',ascending=False  )
    244         print(ret)
    245         pass
    246 
    247     pass
    248 
    249 #数据透视  对多个索引来进行 汇总  下次课更详细的讲   
    250 if 0:
    251     ret = pd.pivot_table(df,index=['学号','姓名'],values=['工资','年龄'],aggfunc={'工资':np.sum,'年龄':np.mean} )
    252     print(ret)
    253     
    View Code

    相应的excel 数据:

    https://files.cnblogs.com/files/zach0812/Excel%E6%95%B0%E6%8D%AE%E9%9B%86.zip

    学号    姓名    年龄    工资
    17096218    张三    28    12345.23
    17096218    张三    19    13345.23
    17096218    张三    20    14345.23
    17096221    张三    21    15345.23
    17096222    张三    22    16345.23
    17096223    张三    23    17345.23
    17096224    张三    24    18345.23
    17096225    张三    25    19345.23
    17096226    张三    26    20345.23
    17096227    张三    27    21345.23
    17096227    张三    28    22345.23
    17096227    张三    29    23345.23
    17096230    张三    30    24345.23
    17096231    张三    31    25345.23
    17096232    张三    32    26345.23
    17096233    张三    33    27345.23
    17096234    张三    34    28345.23
    17096235    张三    35    29345.23
    17096236    张三    36    30345.23
    17096237    张三    37    31345.23
    17096238    张三    38    32345.23
    17096239    张三    39    33345.23
    17096240    张三    40    34345.23
    17096241    张三    41    35345.23
    17096242    张三    42    36345.23
    17096243    张三    43    37345.23
    17096244    张三    44    38345.23
    17096245    张三    45    39345.23
    17096245    张三    46    40345.23
    17096245    张三    47    41345.23
    17096245    张三    48    42345.23
    17096245    张三    49    43345.23
    17096250    张三    50    44345.23
    17096251    张三    51    45345.23
    17096252    张三    52    46345.23
    17096253    张昌博    18    47345.23
    17096254    张昌博    19    48345.23
    17096255    张昌博    20    49345.23
    17096256    张昌博    21    50345.23
    17096257    张昌博    22    51345.23
    17096258    张昌博    23    52345.23
    17096258    张昌博    24    53345.23
    17096258    张昌博    25    54345.23
    17096258    张昌博    26    55345.23
    17096258    张昌博    27    56345.23
    17096263    张昌博    28    57345.23
    17096264    张昌博    29    58345.23
    17096265    张昌博    30    59345.23
    17096266    张昌博    31    60345.23
    17096267    张昌博    32    61345.23
    17096268    张昌博    33    62345.23
    17096269    张昌博    34    63345.23
    17096270    张昌博    35    64345.23
    17096271    张昌博    36    65345.23
    17096272    张昌博    37    66345.23
    17096273    张昌博    38    67345.23
    17096274    张昌博    39    68345.23
    17096275    张昌博    40    69345.23
    17096276    张昌博    41    70345.23
    17096277    张昌博    42    71345.23
    17096278    张昌博    43    72345.23
    17096279    张昌博    44    73345.23
    17096280    李四    18    74345.23
    17096281    李四    19    75345.23
    17096281    李四    20    76345.23
    17096281    李四    21    77345.23
    17096281    李四    22    78345.23
    17096281    李四    23    79345.23
    17096281    李四    24    80345.23
    17096281    李四    25    81345.23
    17096288    李四    26    82345.23
    17096289    李四    27    83345.23
    17096290    李四    28    84345.23
    17096291    李四    29    85345.23
    17096292    李四    30    86345.23
    17096293    李四    31    87345.23
    17096294    李四    32    88345.23
    17096295    李四    33    89345.23
    17096296    李四    34    90345.23
    17096297    李四    35    91345.23
    17096298    李四    36    92345.23
    17096299    李四    37    93345.23
    17096300    李四    38    94345.23
    17096301    李四    39    95345.23
    17096302    李四    40    96345.23
    17096303    李四    41    97345.23
    17096304    李四    42    98345.23
    17096305    李四    43    99345.23
    17096306    李四    44    100345.23
    17096307    李四    45    101345.23
    17096308    李四    46    102345.23
    17096309    李四    47    103345.23
    17096310    李四    48    104345.23
    17096311    李四    49    105345.23
    17096312    李四    50    106345.23
    17096313    李四    51    107345.23
    17096314    李四    52    108345.23
    17096315    李四    53    109345.23
    17096316    李四    54    110345.23
    17096317    李四    55    111345.23
    17096318    李四    56    112345.23
    17096319    李四    57    113345.23
    17096320    李四    58    114345.23
    17096321    李四    59    115345.23
    17096322    李四    60    116345.23
    17096323    李四    61    117345.23
    17096324    李四    62    118345.23
    17096325    李四    63    119345.23
    17096326    王五    18    120345.23
    17096327    王五    19    121345.23
    17096328    王五    20    122345.23
    17096329    王五    21    123345.23
    17096330    王五    22    124345.23
    17096331    王五    23    125345.23
    17096332    王五    24    126345.23
    17096333    王五    25    127345.23
    17096334    王五    26    128345.23
    17096335    王五    27    129345.23
    17096336    王五    28    130345.23
    17096336    王五    29    131345.23
    17096336    王五    30    132345.23
    17096336    王五    31    133345.23
    17096336    王五    32    134345.23
    17096336    王五    33    135345.23
    17096336    王五    34    136345.23
    17096336    王五    35    137345.23
    17096336    王五    36    138345.23
    17096336    王五    37    139345.23
    17096346    王五    38    140345.23
    17096347    王五    39    141345.23
    17096348    王五    40    142345.23
    17096349    王五    41    143345.23
    17096350    王五    42    144345.23
    17096351    王五    43    145345.23
    17096352    王五    44    146345.23
    17096353    王五    45    147345.23
    17096354    王五    46    148345.23
    17096354    王五    47    149345.23
    17096354    王五    48    150345.23
    17096354    王五    49    151345.23
    17096354    王五    50    152345.23
    17096354    王五    51    153345.23
    17096354    王五    52    154345.23
    17096354    王五    53    155345.23
    17096362    赵六    18    156345.23
    17096363    赵六    19    157345.23
    17096364    赵六    20    158345.23
    17096365    赵六    21    159345.23
    17096366    赵六    22    160345.23
    17096367    赵六    23    161345.23
    17096368    赵六    24    162345.23
    17096369    赵六    25    163345.23
    17096370    赵六    26    164345.23
    17096371    赵六    27    165345.23
    17096372    赵六    28    166345.23
    17096373    赵六    29    167345.23
    17096374    赵六    30    168345.23
    17096375    赵六    31    169345.23
    17096376    赵六    32    170345.23
    17096377    赵六    33    171345.23
    17096378    赵六    34    172345.23
    17096379    赵六    35    173345.23
    17096380    赵六    36    174345.23
    17096381    赵六    37    175345.23
    17096382    赵六    38    176345.23
    17096383    赵六    39    177345.23
    17096384    赵六    40    178345.23
    17096385    赵六    41    179345.23
    17096386    赵六    42    180345.23
    17096387    赵六    43    181345.23
    17096388    赵六    44    182345.23
    17096389    赵六    45    183345.23
    17096390    赵六    46    184345.23
    17096391    赵六    47    185345.23
    17096392    赵六    48    186345.23
    17096393    赵六    49    187345.23
    17096394    赵六    50    188345.23
    17096395    赵六    51    189345.23
    17096396    赵六    52    190345.23
    17096397    赵六    53    191345.23
    17096398    赵六    54    192345.23
    17096399    陈七    18    193345.23
    17096400    陈七    19    194345.23
    17096218    陈七    20    195345.23
    17096219    陈七    21    196345.23
    17096220    陈七    22    197345.23
    17096221    陈七    23    198345.23
    17096222    陈七    24    199345.23
    17096223    陈七    25    200345.23
    17096224    陈七    26    201345.23
    17096225    陈七    27    202345.23
    17096226    陈七    28    203345.23
    17096227    陈七    29    204345.23
    17096228    陈七    30    205345.23
    17096229    陈七    31    206345.23
    17096230    陈七    32    207345.23
    17096231    陈七    33    208345.23
    17096232    陈七    34    209345.23
    17096233    陈七    35    210345.23
    17096234    陈七    36    211345.23
    17096235    陈七    37    212345.23
    17096236    陈七    38    213345.23
    17096237    陈七    39    214345.23
    17096238    沈八    40    215345.23
    17096239    沈八    41    216345.23
    17096240    沈八    42    217345.23
    17096241    沈八    43    218345.23
    17096242    沈八    44    219345.23
    17096243    沈八    45    220345.23
    17096244    沈八    46    221345.23
    17096245    沈八    47    222345.23
    17096246    沈八    48    223345.23
    17096247    沈八    49    224345.23
    17096248    沈八    50    225345.23
    17096249    沈八    51    226345.23
    17096250    沈八    52    227345.23
    17096251    沈八    53    228345.23
    17096252    沈八    54    229345.23
    17096253    沈八    55    230345.23
    17096254    沈八    56    231345.23
    17096255    沈八    57    232345.23
    17096256    沈八    58    233345.23
    17096257    沈八    59    234345.23
    17096258    沈八    60    235345.23
    17096259    沈八    61    236345.23
    17096260    沈八    62    237345.23
    17096261    沈八    63    238345.23
    17096262    沈八    64    239345.23
    17096263    沈八    65    240345.23
    17096264    沈八    66    241345.23
    17096265    沈八    67    242345.23
    17096266    沈八    68    243345.23
    17096267    沈八    69    244345.23
    17096268    沈八    70    245345.23
    17096269    沈八    71    246345.23
    17096270    沈八    72    247345.23
    17096271    沈八    73    248345.23
    17096272    沈八    74    249345.23
    17096273    沈八    75    250345.23
    17096274    沈八    76    251345.23
    17096275    沈八    77    252345.23
    17096276    沈八    78    253345.23
    17096277    沈八    79    254345.23
    17096278    沈八    80    255345.23
    17096279    沈八    81    256345.23
    17096280    沈八    82    257345.23
    17096281    沈八    83    247345.23
    17096282    沈八    84    237345.23
    17096283    沈八    85    227345.23
    17096284    沈八    86    217345.23
    17096285    沈八    87    207345.23
    17096286    沈八    88    197345.23
    17096287    沈八    89    187345.23
    17096288    沈八    90    177345.23
    17096289    沈八    91    167345.23
    17096290    沈八    92    157345.23
    17096291    沈八    93    147345.23
    17096292    沈八    94    137345.23
    17096293    沈八    95    127345.23
    17096294    沈八    96    117345.23
    17096295    沈八    97    107345.23
    17096296    沈八    98    97345.23
    17096297    吴九    18    87345.23
    17096298    吴九    19    77345.23
    17096299    吴九    20    67345.23
    17096300    吴九    21    57345.23
    17096301    吴九    22    47345.23
    17096302    吴九    23    37345.23
    17096303    吴九    24    47345.23
    17096304    吴九    25    57345.23
    17096305    吴九    26    67345.23
    17096306    吴九    27    77345.23
    17096307    吴九    28    87345.23
    17096308    吴九    29    97345.23
    17096309    吴九    30    107345.23
    17096310    吴九    31    117345.23
    17096311    吴九    32    127345.23
    17096312    吴九    33    137345.23
    17096313    吴九    34    147345.23
    17096314    吴九    35    157345.23
    17096315    吴九    36    167345.23
    17096316    吴九    37    177345.23
    17096317    吴九    38    187345.23
    17096318    吴九    39    197345.23
    17096319    吴九    40    207345.23
    17096320    吴九    41    217345.23
    17096321    吴九    42    227345.23
    17096322    吴九    43    237345.23
    17096323    吴九    44    247345.23
    17096324    吴九    45    257345.23
    17096325    吴九    46    267345.23
    17096326    吴九    47    277345.23
    17096327    吴九    48    287345.23
    17096328    吴九    49    297345.23
    17096329    吴九    50    307345.23
    17096330    吴九    51    317345.23
    17096331    吴九    52    327345.23
    17096332    吴九    53    337345.23
    17096333    吴九    54    347345.23
    17096334    吴九    55    357345.23
    17096335    吴九    56    367345.23
    17096336    吴九    57    377345.23
    17096337    吴九    58    387345.23
    17096338    吴九    59    397345.23
    17096339    吴九    60    407345.23
    17096340    吴九    61    417345.23
    17096341    吴九    62    427345.23
    17096342    吴九    63    437345.23
    17096343    吴九    64    447345.23
    17096344    吴九    65    457345.23
    17096345    吴九    66    467345.23
    17096346    吴九    67    477345.23
    17096347    吴九    68    487345.23
    17096348    吴九    69    497345.23
    17096349    吴九    70    507345.23
    17096350    吴九    71    517345.23
    17096351    马十    18    527345.23
    17096352    马十    19    537345.23
    17096353    马十    20    547345.23
    17096354    马十    21    557345.23
    View Code
  • 相关阅读:
    [bzoj3224] 普通平衡树
    [总结] 三种常见的区间贪心问题
    [NOIP2014] 飞扬的小鸟
    POJ 1185 炮兵阵地
    WOJ 1538 Stones II 转化背包问题
    WOJ 1542 Countries 并查集转化新点+最短路
    UVA 11375 高精度Bign类
    2014_csu选拔1_B
    Codeforces 405D 数学问题
    Codeforces 400C 矩阵乘法 数学规律
  • 原文地址:https://www.cnblogs.com/zach0812/p/11565278.html
Copyright © 2011-2022 走看看