本文共 3054 字,大约阅读时间需要 10 分钟。
pandas可以指定每行每列的名字 基础: 创建一个Pandans的序列: result= pd.Series([1,2,3,4]) 创建一个时间的序列 dates = pd.date_range("20160304",periods=6) 创建一个二维数据() 相当于二维的numpy) pd.DataFrame(np.random.randn(6,4),index=dates(已经定义好的变量),columns=['a','b','c','d']) 使用字典来创建二维数据: A,B,C pd.DateFrame({'A':1,'B':'fpp','C':'pd'}) result.dtypes 每列的类型 result.index 每列的序号 result.columns 每列的列名 result.values 所有值 result.describe() 描述 ,只能运算数字的一些操作 result.T 矩阵转至 result.sort_index(axis=1,ascending=False) 以列名来倒叙排序 1:列名排序 0:行排序 False:倒叙,True:正序 result.sort_values(by='E') :排序当行的值 选择数据: result['A']/result.A --->获取A列的值 result[2:3] --->切片选择 pd.loc['行名',['列名','']] pd.iloc[3] 第三行的数据 pd.iloc[3,1] 第三第一列 pd.ix[行,列] -结合iloc和loc pd[pd.A>8] ----->A列大于8的所有信息 设置值: 通过选择数据后然后进行赋值 处理丢失数据: df.dropna(axis=0,how="any") #how={'any',"all"} any:只要有none就丢掉,all:全为none才丢掉 df.fillna(value=0):填充none位置处的值 df.isnull():返回False,True列表 来查看是否缺失值 np.any(df.isnull()==True) -----检查是否至少有一个等于true 读取数据: data = pd.read_csv("文件名") ----读取csv的文件 data.to_csv("文件名") 合并1concat --->合并DataFrame 列名一样合并: 1.res = pd.concat([df1,df2,df3],axis=0,ignore_index=True) ignore_index:忽略行名,axis=0是预设值,因此未设定任何参数时,函数默认axis=0。0:纵向,1:横向 2.#join,['inner','outer'] 默认是"outer"依照column来做"纵向"合并,如果没有就用None填充,inner,只会合并相同的列, res = pd.concat([df1,df2,df3],axis=0,join="outer",ignore_index=True) ignore_index:忽略行名 3. join_axes (依照 axes 合并)->依据哪一个的索引来左右合并 pd.concat([df1,df2],axis=1,join_axes=[df1.index],ignore_index=True) 依据df1的行名来左右合并 df1.append([数据1,数据2],ignore_index=True) -->也可以指定行还是列添加 s1 = pd.Series([1,2,3,4],index=['a','b','c','d']) df1.append([s1],ignore_index=True) ->只在最后一行添加一行 合并2merge: 关于列名合并,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中. pd.merge(date1,date2,on=["列名"]) ----》on依据哪一个列名合并,默认是how=inner-->只考虑相同的key how=[inner,outer,left,right] ->left 以左边的dataframe的列名为主 res = pd.merge(left,right,on="key") #on="" 依据那一列名合并 # 合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner':找相同的合并 res = pd.merge(left,right,on=["key1","key2"],how="outer") #全部合并,没有值用none补充 res = pd.merge(left,right,on=["key1","key2"],how="left") #以第一个数据(left)的on为主 res = pd.merge(left,right,on=["key1","key2"],how="right",indicator="result") #以第二个数据(right)的on为主,indicator="result"将合并的记录是否有值放在新的一列。 res=pd.merge(left,right,left_index=True,right_index=True,how="outer") #left_index=True,right_index=True另个必须同时写,依据两个的行索引来合并 #使用suffixes解决overlapping的问题 res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='outer') #suffixes 解决列名或者行名一样的问题,给两个一样的列名起个别名 plot:汇图 import numpy as np import pandas as pd import matplotlib.pyplot as plt #Series data = pd.Series(np.random.randn(1000),index=np.arange(1000)) data = data.cumsum() #每个数相加与前一个 data.plot() #数据绘图 plt.show() #plt显示图 #DataFrame data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=['A','B','C','D']) data = data.cumsum() #data.plot() # plt.show() #plot method #vbar,hist,box,kde,area,scatter,hexbin..... #图的一些展示方式 ax = data.plot.scatter(x='A',y='B',color="DarkBlue",label="Class1") #data.plot.scatter(x='D',y='C',color="darkGreen",label="Class2",ax=ax) #在一张图上画上多个class plt.show()转载地址:http://exobi.baihongyu.com/