# 產生 row6,column4 個 standard normal distribution 隨機值,使用 ABCD 當 columns,使用 dates 當 index df0 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD')) print(df0)
A B C D
2017-01-01 1.112542 -0.142577 0.832830 -2.755133
2017-01-02 -0.218838 -0.304488 1.437599 -0.402454
2017-01-03 0.295245 -0.786898 -1.231896 -0.224959
2017-01-04 -0.346745 -1.582944 -0.464175 -0.410576
2017-01-05 0.163782 0.948795 -0.420505 -0.641032
2017-01-06 0.515806 -0.935421 -0.701349 -0.820109
0 1 2 \
A 1 1 1
B 2017-01-02 00:00:00 2017-01-02 00:00:00 2017-01-02 00:00:00
C 1 1 1
D 3 3 3
E test train test
F foo foo foo
3
A 1
B 2017-01-02 00:00:00
C 1
D 3
E train
F foo
1 2
# sort by the index labels。axis=0 使用 index 進行 sort,axis=1 使用 columns 進行 sort。ascending 決定是否由小到大 print(df.sort_index(axis=0, ascending=False))
A B C D E F
3 1.0 2017-01-02 1.0 3 train foo
2 1.0 2017-01-02 1.0 3 test foo
1 1.0 2017-01-02 1.0 3 train foo
0 1.0 2017-01-02 1.0 3 test foo
1 2
# sort by the values of columns print(df.sort_values(by='E'))
A B C D E F
0 1.0 2017-01-02 1.0 3 test foo
2 1.0 2017-01-02 1.0 3 test foo
1 1.0 2017-01-02 1.0 3 train foo
3 1.0 2017-01-02 1.0 3 train foo
選取資料
1 2 3
# 選取值的方式一般建議使用 1. loc, 2. iloc, 3. ix # label-location based 行列標籤值取值,以下取出 index=1 那一欄,[列, 行] print(df.loc[0])
A 1
B 2017-01-02 00:00:00
C 1
D 3
E test
F foo
Name: 0, dtype: object
1 2
# iloc 則通過行列數字索引取值,[列,行] print(df.iloc[0:3, 1:2])
B
0 2017-01-02
1 2017-01-02
2 2017-01-02
1 2
# 兼容 loc 和 iloc print(df.ix[0, 'B'])
2017-01-02 00:00:00
1 2
# 兼容 loc 和 iloc print(df.ix[1, 3])
3
1 2
# 布林取值,取出 A 行大於 0 的資料 print(df[df.A > 0])
A B C D E F
0 1.0 2017-01-02 1.0 3 test foo
1 1.0 2017-01-02 1.0 3 train foo
2 1.0 2017-01-02 1.0 3 test foo
3 1.0 2017-01-02 1.0 3 train foo
1 2 3
# 產生 Series 值 s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20170102', periods=6)) print(s1)
A B C D E F E
2017-01-01 1 1 1 1 1 1 1
2017-01-02 1 1 1 1 1 1 1
A B C D E F E
2017-01-01 1 1 1 1 1 1 1
2017-01-02 1 1 1 1 1 1 1
2017-01-03 3 3 3 3 3 3 3
2017-01-04 3 3 3 3 3 3 3
A B C D E F E
2017-01-01 1 1 1 1 1 1 1
2017-01-02 1 1 1 1 1 1 1
2017-01-03 NaN NaN NaN NaN NaN NaN NaN
2017-01-04 NaN NaN NaN NaN NaN NaN NaN
A B C D E F E
2017-01-01 False False False False False False False
2017-01-02 False False False False False False False
2017-01-03 True True True True True True True
2017-01-04 True True True True True True True
留言討論