pandas的一些小操作

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"])

猜你喜欢

转载自blog.csdn.net/qq_41832686/article/details/80645589