一、数据结构
- Series:相当于一维
- DataFrame:相当于多维
1.series创建
import pandas as pd
import numpy as np
s = pd.Series([1,3,6,np.nan,44,1])
'''
0 1.0
1 3.0
2 6.0
3 NaN
4 44.0
5 1.0
dtype: float64
'''
2.dataframe创建
(1)行列命名
dates = pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df)
"""
a b c d
2016-01-01 -0.253065 -2.071051 -0.640515 0.613663
2016-01-02 -1.147178 1.532470 0.989255 -0.499761
2016-01-03 1.221656 -2.390171 1.862914 0.778070
2016-01-04 1.473877 -0.046419 0.610046 0.204672
2016-01-05 -1.584752 -0.700592 1.487264 -1.778293
2016-01-06 0.633675 -1.414157 -0.277066 -0.442545
"""
#应用
print(df['b']) #输出b列
(2)默认命名
df1 = pd.DataFrame(np.arange(12).reshape((3,4)))
print(df1)
"""
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
"""
(3)字典命名
df2 = pd.DataFrame({'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo'})
print(df2)
"""
A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
"""
#应用
print(df2.dtypes) #查看属性
print(df2.index) #查看每行序号
print(df2.columns) #查看每列的名称
print(df2.values) #查看df2的值
df2.describe() #数据总结
print(df2.T) #数据转置
print(df2.sort_index(axis=1, ascending=False)) #对数据的 index 进行行排序并输出
print(df2.sort_values(by='B')) #对数据 值 排序输出
二、数据筛选
- 普通筛选
- loc:标签loc
- iloc:序列iloc
- ix:混合ix
- 判断筛选
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D'])
#普通筛选
print(df['A'],df.A)
print(df[0:3], df['20130102':'20130104'])
#loc标签
print(df.loc['20130101'])
print(df.loc['20130101',['A','B']])
#iloc序列
print(df.iloc[[1,3,5],1:3])
#ix混合
print(df.ix[:3,['A',''C]])
#判断筛选
print(df.[df.A>8])
三、设置值
- loc、iloc:通过标签、位置设置
- 判断条件设置
- 按照行和列设置及添加
- 添加数据
dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D']) #位置设置 df.iloc[2,2] = 1111 df.loc['20130101','B'] = 2222 #条件判断设置 df.B[df.A>4] = 0 #按照行和列设置添加 df['F'] = np.nan #添加序列(长度必须一致) df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130101',periods=6))