python中pandas库学习笔记

现在回想学pandas很意外,记得五月份的时候刚刚跑到现在的公司实习,那个时候公司没发电脑,当时天天去那就看书(自己的电脑被朋友拿走了),就这样看了半个月的pandas,后来也就慢慢用上了,下面是pandas个人学习的一些简单笔记:
  1. #python中的pandas库主要有DataFrame和Series类(面向对象的的语言更愿意叫类) DataFrame也就是  
  2. #数据框(主要是借鉴R里面的data.frame),Series也就是序列 ,pandas底层是c写的 性能很棒,有大神  
  3. #做过测试  处理亿级别的数据没问题,起性能可以跟同等配置的sas媲美  
  4. #DataFrame索引  df.loc是标签选取操作,df.iloc是位置切片操作  
  5. print(df[['row_names','Rape']])  
  6. df['行标签']  
  7. df.loc[行标签,列标签]  
  8. print(df.loc[0:2,['Rape','Murder']])  
  9. df.iloc[行位置,列位置]  
  10. df.iloc[1,1]#选取第二行,第二列的值,返回的为单个值  
  11. df.iloc[0,2],:]#选取第一行及第三行的数据  
  12. df.iloc[0:2,:]#选取第一行到第三行(不包含)的数据  
  13. df.iloc[:,1]#选取所有记录的第一列的值,返回的为一个Series  
  14. df.iloc[1,:]#选取第一行数据,返回的为一个Series  
  15. print(df.ix[1,1])  # 更广义的切片方式是使用.ix,它自动根据你给到的索引类型判断是使用位置还是标签进行切片  
  16. print(df.ix[0:2])  
  17.   
  18.   
  19. #DataFrame根据条件选取子集  类似于sas里面if、where ,R里面的subset之类的函数  
  20. df[df.Murder>13]  
  21. df[(df.Murder>10)&(df.Rape>30)]  
  22. df[df.sex==u'男']  
  23. #重命名  相当于sas里面的rename   R软件中reshape包的中的rename  
  24. df.rename(columns={'A':'A_rename'})    
  25. df.rename(index={1:'other'})  
  26.   
  27. #删除列  相当于sas中的drop  R软件中的test['col']<-null  
  28. df.drop(['a','b'],axis=1)  or  del  df[['a','b']]  
  29.   
  30. #排序  相当于sas里面的sort   R软件里面的df[order(x),]  
  31. df.sort(columns='C')   #行排序  y轴上  
  32. df.sort(axis=1)  #各个列之间位置排序  x轴上  
  33.   
  34. #数据描述  相当于sas中proc menas  R软件里面的summary  
  35. df.describe()  
  36.   
  37.   
  38. #生成新的一列  跟R里面有点类似  
  39. df['new_columns']=df['columns']  
  40. df.insert(1,'new_columns',df['B'])  #效率最高  
  41. df.join(Series(df['columns'],name='new_columns'))  
  42.   
  43.   
  44. #列上面的追加  相当于sas中的append   R里面cbind()  
  45. df.append(df1,ignore_index=True)  
  46. pd.concat([df,df1],ignore_index=True)  
  47.   
  48. #最经典的join   跟sas和R里面的merge类似   跟sql里面的各种join对照  
  49. merge()  
  50.   
  51. #删除重行  跟sas里面nodukey   R里面的which(!duplicated(df[])类似  
  52. df.drop_duplicated()  
  53.   
  54. #获取最大值  最小值的位置   有点类似矩阵里面的方法  
  55. df.idxmin(axis=0 ) df.idxmax(axis=1)  01有什么不同  自己摸索去  
  56.   
  57. #读取外部数据跟sas的proc  import  R里面的read.csv等类似  
  58. read_excel()  read_csv()  read_hdf5() 等  
  59.   
  60. 与之相反的是df.to_excel()   df.to_ecv()  
  61.   
  62. #缺失值处理  个人觉得pandas中缺失值处理比sas和R方便多了  
  63. df.fillna(9999)  #用9999填充    
  64.   
  65. #链接数据库 不多说    pandas里面主要用 MySQLdb  
  66. import MySQLdb  
  67. conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")  
  68. read_sql() #很经典  
  69. #写数据进数据库  
  70. df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)  
  71.   
  72. #groupby  跟sas里面的中的by    R软件中dplyr包中的group_by  sql里面的group by功能是一样的 这里不多说  
  73.   
  74. #求哑变量    
  75. dumiper=pd.get_dummies(df['key'])  
  76. df['key'].join(dumpier)  
  77.   
  78. #透视表  和交叉表   跟sas里面的proc  freq步类似  R里面的aggrate和cast函数类似  
  79. pd.pivot_table()  
  80. pd.crosstab()  
  81.   
  82. #聚合函数经常跟group by一起组合用  
  83. df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})    
  84.   
  85.   
  86. #数据查询过滤  
  87. test.query("0.2  
  88. 将STK_ID中的值过滤出来  
  89. stk_list = ['600809','600141','600329']中的全部记录过滤出来,命令是:rpt[rpt['STK_ID'].isin(stk_list)].  
  90. 将dataframe中,某列进行清洗的命令  
  91. 删除换行符:misc['product_desc'] = misc['product_desc'].str.replace('\n''')  
  92. 删除字符串前后空格:df["Make"] = df["Make"].map(str.strip)  
  93.   
  94.   
  95. 如果用模糊匹配的话,命令是:  
  96. rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]  
  97.   
  98.   
  99. 对dataframe中元素,进行类型转换  
  100.   
  101. df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)  
  102. #时间变换  主要依赖于datemie  和time两个包  
  103. http://www.2cto.com/kf/201401/276088.html  
  104.   
  105. #其他的一些技巧  
  106. df2[df2['A'].map(lambda x:x.startswith('61'))]  #筛选出以61开头的数据  
  107. df2["Author"].str.replace("<.+>", "").head()  #replace("<.+>", "")表示将字符串中以”<”开头;以”>”结束的任意子串替换为空字符串  
  108.   
  109. commits = df2["Name"].head(15)  
  110. print commits.unique(), len(commits.unique())   #获的NAME的不同个数,类似于sql里面count(distinct name)  
  111.   
  112.   
  113. #pandas中最核心 最经典的函数apply  map   applymap  
  114.   
  115. #这三个函数是pandas里面数据变换的核心  避免了for循环,跟R里面的apply函数类似  
  116. #主要用法不清楚可以问我  
  117.   
  118. pd.concat([df1,df2],axis=1)  横向合并 ,没有axis=1 则纵向合并  
  119.   
  120. 上面有不懂得、或者我写错的、或者侵权的、或愿意交流的请加(714947298

http://blog.youkuaiyun.com/luoyexuge/article/details/49104583

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值