pandas常用操作总结

pandas基本介绍

s=pd.Series([1,3,6,np.nan,4,1]) #创建一个Series序列
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d']) #创建一个DataFrame数据框
df1=pd.DataFrame({'A':1,
'B':pd.Timestamp('20130102'),
'C':pd.Series(1,index=list(range(4),dtype='int32',
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(["test","train","test","train"]),
'F':'foo'}) #另一种创建DataFrame的方式
df1.dtypes #给出数据框每一列的数据形式
df1.index #返回数据框的index
df1.columns #返回数据框的columns
df1.values #输出数据框所有的values
df1.describe() #会给出数据框的一些统计数据,如count,mean,std,min等
df1.T #数据框转置
df1.sort_index(axis=1,ascending=False) #axis=1,对df1的列进行排序,ascending=False则倒序排列)
df1.sort_values(by='E') #by指定对某一列进行排序

pandas选择数据

#先创建一个DataFrame
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) #提取数据框某一列的两种方法
pirnt(df[0:3],df['20130102':'20130104']) #选取数据框的某几行

#select by label:loc
df.loc['20130102'] #该方法需要根据行名和列名来选择数据
df.loc[:,['A','B']]) #选择A,B列的所有数据

#select by position:iloc
df.iloc[3,1] #根据位置来选取数据,这里选取第3行的第一列数据
df.iloc[3:5,1:2] #选取第3-5行,1-2列的数据
df.iloc[[1,3,5],1:3] #选取第1,3,5行,1-3列的数据

#mixed selection:ix
df.ix[:3,['A','C']] #将loc和iloc方法混合使用的一种方法,可同时用label和position选取

#Boolean indexing
df[df.A>8] #筛选出A中数据数值大于8的所有行组成的dataframe

pandas设置值

#先创建一个DataFrame
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[df.A>4]=0 #将A列当中满足值大于4的行的所有元素都赋值为0
df.A[df.A>4]=0 #将A列当中满足值大约4的所有元素赋值为0
df.B[df.A>4]=0 #如果A列当中存在值大约4的行,将该行在B列的值变为0
df['F']=np.nan #新建F列,并将该列的值设置为nan
df['E']=pd.Series([1,2,3,4,5,6],index=pd.date_range('20130101',periods=6))

pandas处理丢失数据

#先创建一个DataFrame
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[0,1]=np.nan
df.iloc[1,2]=np.nan
df.dropna(axis=0, how='any')) #丢弃只要含有nan的行,how={'any','all'},当axis=0时,all表示只有该行所有元素都为nan时才丢弃
df.fillna(value=0)) #将dataframe中的nan全部替换成0
df.isnull() #判断df中有没有缺失数据,返回bool型的dataframe
np.any(df.isnull())==True #判断df中是否至少含有一个缺失值,如果有缺失值则返回True,没有则返回False

pandas导入导出

data=pd.read_csv('student.csv',sep="\t",index_col=0,header=0) #读取csv格式文件,sep指定分隔符,header指定行数用来作为列名,默认为0,如果文件中没有列名,可设置为None; index_col指定用作列索引的列编号或者列名

data.to_csv('student.csv') #参数基本与read_csv相同

pandas合并concat

#concatenating

concatenating.png

#join,['inner','outer']

join.png

#join_axes

join_axes.png

#append

append.png

pandas合并merge

#merge

merge.png

#merging two df by key/keys.(may be used in database)
#consider two keys

merge_by_keys.png

#how=['left','right','outer','inner']

how.png

#indicator

indicator.png

#give the indicator a custom name

idicator_custom.png

#merged by index

merged_by_index.png

#left_index and right_index

left_index_and_right_index.png

#handle overlapping

handle_overlapping.png

你可能感兴趣的:(pandas常用操作总结)