DateFrame
DataFrame
df1 = pd.DataFrame(np.arange(12).reshape((3,4)))
print(df1)
1.结合numpy生成DateFrame
2.直接输入一个字典
index
print(df1.index)
输出:(每一行的标序)
RangeIndex(start=0, stop=3, step=1)
print(df1.columns)
输出:(每一列的标序)
RangeIndex(start=0, stop=4, step=1)
values
print(df1.values)
(输出DataFrame的内容)
describe
print(df1.describe())
(输出DataFrame里面数字的一些平均值,最大,最下值之类的东西)
0 1 2 3
count 3.0 3.0 3.0 3.0
mean 4.0 5.0 6.0 7.0
std 4.0 4.0 4.0 4.0
min 0.0 1.0 2.0 3.0
25% 2.0 3.0 4.0 5.0
50% 4.0 5.0 6.0 7.0
75% 6.0 7.0 8.0 9.0
max 8.0 9.0 10.0 11.0
sort(可以以values,index)
print(df1.sort_index(axis=1,ascending=False))
(以列的标序,从大到小排序)
3 2 1 0
0 3 2 1 0
1 7 6 5 4
2 11 10 9 8
转置
print(df1.T)
(输出转置)
dtype
print(df1.dtypes)
输出:(每列的数据形式)
0 int32
1 int32
2 int32
3 int32
dtype: object
选择数据
选择A列
dates = pd.date_range("2018/6/10",periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=["A","B","C","D"])
print(df["A"],df.A)
(两种选择A列的形式)
选择行
dates = pd.date_range("2018/6/10",periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=["A","B","C","D"])
print(df[0:3],df["2018/6/11":"2018/6/13"])
使用loc,iloc切片
print(df.loc["2018/6/12",["A","B"]])
print(df.iloc[3:5,1:3])
使用ix结合标签和数字筛选
print(df.ix[:3,["A","B"]])
用>,<筛选
print(df[df.A>8])
修改值
df.iloc[3][3]=111
df.loc["2018/6/12","B"]=111
df[df.A>0]=0
处理空数据
使用dropna清除值等于Nan的位置
print(df.dropna(axis=1,how="any"))
how等于any时,清除任何一个nan
how等于all时,只有当值全为nan时才清除
使用fillna填充nan位置的值
print(df.fillna(value=0))
使用ifnull判断是否对丢失数据,有的话会在原位置返回True
print(df.isnull())
使用numpy的any判断所有的表格是否有nan
print(np.any(df.isnull())==True)
存取文件
读取文件
f = open('xty.csv')
res = pd.read_csv(f)
储存文件
res.to_pickle('xty.pickle',"rb")
合并表格
使用pd.concat()
df1 = pd.DataFrame(np.ones((3,4))*0,columns=["a","b","c","d"])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=["a","b","c","d"])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=["a","b","c","d"])
res = pd.concat([df1,df2,df3],axis=0)
有个join属性,
当join="inner"
时,只会合并共有的行或列
当join="outer"
时,会不共有的部分会突出来
ignore_index=Ture
会重新排列index
join_axes=[df1.index]
左右合并时,使用df1的index
合并一个series
s1 = pd.Series([1,2,3,4],index=["a","b","c","d"])
res = df1.append(s1,ignore_index=True)
使用merge合并
res = pd.merge(left,right,on="key")
有两个key的情况
res = pd.merge(left,right,on=["key1","key2"])