Pandas 是基于 numpy 用来进行数据处理、数据分析的的 Python 库,和 scikit-learn 等机器学习包配合起来有奇效。
网站及其相关文档: http://pandas.pydata.org/
一、Pandas 基本数据结构 1. Series Series 是 pandas 中常用的数据结构 ,以 index-data 索引值与数据值对的形式储存。用 Python for Data Analysis 书中的话说,Series 是一个 定长的、有序的字典。 结合了 list 和 dict 的特征。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from pandas import s = Series([1 ,'hello' ,'a' ,32.0 ]) s.values s.index s2 = Series([100 ,'hello' ,'s' ],index=['num' ,'title' ,'mark' ]) sdict = {'num' :100 ,'title' :'hello' ,'mark' :'s' } s2 = Series(sdict) >>> s2['num' ]>>> 100 s2.name = 'pop'
2. DataFrame DataFrame 是 pandas 中的表格数据结构,包含一个经过排序的列表集。可以看作是一个“嵌套列表”或者是key是字段名,value是一个数据Series的大型字典。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 data = {'state' : ['Ohio' , 'Ohio' , 'Ohio' , 'Nevada' , 'Nevada' ], 'year' : [2000 , 2001 , 2002 , 2001 , 2002 ], 'pop' : [1.5 , 1.7 , 3.6 , 2.4 , 2.9 ]} frame = DataFrame(data) >>> frame>>> pop state year 0 1.5 Ohio 2000 1 1.7 Ohio 2001 2 3.6 Ohio 2002 3 2.4 Nevada 2001 4 2.9 Nevada 2002 f2 = DataFrame(frame, columns=['pop' ,'state' ,'year' ])
二、使用 Pandas 处理数据 1. 直接将csv文件读取为DataFrame 以最近在做的天池数据竞赛中的某个表为例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 In [29 ]: from pandas import DataFrame,Series In [30 ]: import pandas as pd In [31 ]: data = pd.read_csv('result1.csv' ) In [32 ]: data.describe() Out[32 ]: time init count sort hot count 6.166800e+05 6.166800e+05 6.166800e+05 616680.000000 616680.000000 mean 4.160684e+06 2.536660e+04 1.246682e+08 6098.808620 2.931601 std 3.049515e+06 1.604409e+05 1.249575e+09 3634.705681 3.157553 min 9.000000e+04 0.000000e+00 1.620000e+02 3.000000 1.000000 25 % 2.163600e+06 6.250000e+02 1.072000e+04 3073.000000 1.000000 50 % 3.661200e+06 2.057000e+03 1.031440e+05 6036.500000 1.000000 75 % 5.115600e+06 7.653000e+03 1.398914e+06 9260.000000 5.000000 max 2.095200e+07 7.048087e+06 5.138252e+10 12233.000000 90.000000 In [33 ]: data.head() Out[33 ]: song_id artist_id time \ 0 f9b34fa19fae8bfd03edaebd85b5cc52 3e395 c6b799d3d8cb7cd501b4503b536 187200 1 f9b34fa19fae8bfd03edaebd85b5cc52 3e395 c6b799d3d8cb7cd501b4503b536 273600 2 f9b34fa19fae8bfd03edaebd85b5cc52 3e395 c6b799d3d8cb7cd501b4503b536 360000 3 f9b34fa19fae8bfd03edaebd85b5cc52 3e395 c6b799d3d8cb7cd501b4503b536 446400 4 f9b34fa19fae8bfd03edaebd85b5cc52 3e395 c6b799d3d8cb7cd501b4503b536 532800 init count sort hot 0 10351 2231034 4253 1 1 10351 2231034 4253 1 2 10351 2231034 4253 1 3 10351 2231034 4253 1 4 10351 2231034 4253 1 In [34 ]: data.shape Out[34 ]: (616680 , 7 )
2. pandas 和 scikit-learn 一起处理机器学习问题 以上文处理的数据集为例,第3-6列
3. Pandas 常用统计方法 1 2 3 DF = DataFrame(data1) S = Series(data2)