简介
先看文档
数据结构:
一维数据:Series
二维数据:DataFrame
行:index
列:columns
1 2 3 for col in df.columns: series = df[col]
Pandas相比Numpy更灵活,可以每列存不同类型的对象,而且Cpython优化过,配合俩依赖,速度上其实非常不错,直观上比R的data.frame快
DataFrame是Series拼的就(
Series是标量拼的(
总之就是Series是带有标签的标量列表
DataFrame是带有标签的Series列表
下面就是摘抄文档的,便于查阅
读写数据
1 2 3 4 5 6 df.to_csv('foo.csv' ) pd.read_csv('foo.csv' ) df.to_excel('foo.xlsx' , sheet_name='Sheet1' ) pd.read_excel('foo.xlsx' , 'Sheet1' , index_col=None , na_values=['NA' ])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ## 操作pd.DataFrame 统计DataFrame ```python In [19]: df.describe() Out[19]: A B C D count 6.000000 6.000000 6.000000 6.000000 mean 0.073711 -0.431125 -0.687758 -0.233103 std 0.843157 0.922818 0.779887 0.973118 min -0.861849 -2.104569 -1.509059 -1.135632 25% -0.611510 -0.600794 -1.368714 -1.076610 50% 0.022070 -0.228039 -0.767252 -0.386188 75% 0.658444 0.041933 -0.034326 0.461706 max 1.212112 0.567020 0.276232 1.071804
转置
1 2 3 4 5 6 7 In [20 ]: df.T Out[20 ]: 2013 -01-01 2013 -01-02 2013 -01-03 2013 -01-04 2013 -01-05 2013 -01-06 A 0.469112 1.212112 -0.861849 0.721555 -0.424972 -0.673690 B -0.282863 -0.173215 -2.104569 -0.706771 0.567020 0.113648 C -1.509059 0.119209 -0.494929 -1.039575 0.276232 -1.478427 D -1.135632 -1.044236 1.071804 0.271860 -1.087401 0.524988
按行名排序
1 2 3 4 5 6 7 8 9 In [21 ]: df.sort_index(axis=1 , ascending=False ) Out[21 ]: D C B A 2013 -01-01 -1.135632 -1.509059 -0.282863 0.469112 2013 -01-02 -1.044236 0.119209 -0.173215 1.212112 2013 -01-03 1.071804 -0.494929 -2.104569 -0.861849 2013 -01-04 0.271860 -1.039575 -0.706771 0.721555 2013 -01-05 -1.087401 0.276232 0.567020 -0.424972 2013 -01-06 0.524988 -1.478427 0.113648 -0.673690
按列值排序:
1 2 3 4 5 6 7 8 9 In [22 ]: df.sort_values(by='B' ) Out[22 ]: A B C D 2013 -01-03 -0.861849 -2.104569 -0.494929 1.071804 2013 -01-04 0.721555 -0.706771 -1.039575 0.271860 2013 -01-01 0.469112 -0.282863 -1.509059 -1.135632 2013 -01-02 1.212112 -0.173215 0.119209 -1.044236 2013 -01-06 -0.673690 0.113648 -1.478427 0.524988 2013 -01-05 -0.424972 0.567020 0.276232 -1.087401
最大值与最小值
Series 支持 nsmallest() 与 nlargest() 方法,本方法返回 N 个最大或最小的值。对于数据量大的 Series 来说,该方法比先为整个 Series 排序,再调用 head(n) 这种方式的速度要快得多。
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 37 38 39 40 41 42 43 In [316 ]: s = pd.Series(np.random.permutation(10 )) In [317 ]: s Out[317 ]: 0 2 1 0 2 3 3 7 4 1 5 5 6 9 7 6 8 8 9 4 dtype: int64 In [318 ]: s.sort_values() Out[318 ]: 1 0 4 1 0 2 2 3 9 4 5 5 7 6 3 7 8 8 6 9 dtype: int64 In [319 ]: s.nsmallest(3 ) Out[319 ]: 1 0 4 1 0 2 dtype: int64 In [320 ]: s.nlargest(3 ) Out[320 ]: 6 9 8 8 3 7 dtype: int64
DataFrame 也支持 nlargest 与 nsmallest 方法。
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 [321 ]: df = pd.DataFrame({'a' : [-2 , -1 , 1 , 10 , 8 , 11 , -1 ], .....: 'b' : list ('abdceff' ), .....: 'c' : [1.0 , 2.0 , 4.0 , 3.2 , np.nan, 3.0 , 4.0 ]}) .....: In [322 ]: df.nlargest(3 , 'a' ) Out[322 ]: a b c 5 11 f 3.0 3 10 c 3.2 4 8 e NaNIn [323 ]: df.nlargest(5 , ['a' , 'c' ]) Out[323 ]: a b c 5 11 f 3.0 3 10 c 3.2 4 8 e NaN2 1 d 4.0 6 -1 f 4.0 In [324 ]: df.nsmallest(3 , 'a' ) Out[324 ]: a b c 0 -2 a 1.0 1 -1 b 2.0 6 -1 f 4.0 In [325 ]: df.nsmallest(5 , ['a' , 'c' ]) Out[325 ]: a b c 0 -2 a 1.0 1 -1 b 2.0 6 -1 f 4.0 2 1 d 4.0 4 8 e NaN