1 快速入门(series、数据框的创建、查看、排序、选取基础操作)


import numpy as np
import pandas as pd

1.1 series、Dataframe的创建

s=pd.Series([1,3,np.nan,5,7])

dates=pd.date_range('19800801',periods=7)#创建时间序列
df=pd.DataFrame(np.random.randn(7,4),index=dates,columns=list('ABCD'))
#np.randn函数用于返回标准正态分布中的随机数

df2 = pd.DataFrame({ 'A' : 1.,
                     'B' : pd.Timestamp('20170102'),#利用时间戳类创建日期列
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                     #只要有一列指定索引即可
                     'D' : np.array([3] * 4,dtype='int32'),
                     'E' : pd.Categorical(["test","train","test","train"]),
                     #codes 访问序号,categories访问类别数及类别名称,不过此时被转换成series类型,不能访问
                     'F' : 'foo' })

1.2 series、Dataframe的查看及排序

df2.dtypes #查看数据类型
df2.dtypes.value_counts()#查看各个数据类型的个数

df2.head(2)#注意函数后面加括号!,默认访问前5行数据,可指定访问行数
df2.tail(2)

df2.index#获取行索引信息
df.columns#获取列索引信息
df.values#以数组形式返回df所有值

df2.describe()#只描述数字的统计情况
df2.T

df.sort_index(axis=0, ascending=False)#指定排序的索引及升降序,axis=0为行索引降序排列
df.sort_index(axis=1, ascending=False)#此时为列索引升序排序

df.sort_values(by='B') #按内部子集排序,默认升序

1.3 series、Dataframe的元素选取(df[ ]方法、loc()方法、iloc()方法、ix()方法、条件选取法)

  • df [ ]方法:仅做行选择或列选择
df[0:3]#直接数字访问为行访问,但是不能仅输入一个数字,因为指代不明
df['20170102':'20170103']#指定行索引访问
df['A']
df.A #同df['A']
df[['A','B']]
  • loc()方法:输入index进行行列选择
df.loc[dates[0]]#先访问dates的第一个元素,传回标签,通过标签索引访问行数据

df.loc[:,['A','B']]
df.loc['20170102':'20170104',['A','B']]

df.loc['20170102',['A','B']]

df.loc[dates[0],'A']#指定特定行特定列上的数据

df.at[dates[0],'A']#同loc
  • iloc()方法:输入行列号进行选择
df.iloc[3] #iloc解决了loc不能直接传单个数字的问题,此时单个数字表示行号
df.iloc[3:5,0:2]#iloc的计数同样从0开始
df.iloc[[1,2,4],[0,2]]#iloc可指定特定行列
df.iloc[1:3,:]
df.iloc[1,1]

print(df.iat[1,1])#等同于iloc
  • ix()方法:可同时输入index和行(列)号进行选择
df.ix[:4]#默认先选行
df.ix[:,'A']
df.ix[[1,2],'A']
  • 条件选取法:获取满足条件的df
df[df.A > 0]#通过df.A快速访问列元素,A为列标签
df[df > 0]

df2 = df.copy()
df2['E'] = ['one', 'one','two','three','four','three']#加入新列,直接赋值

df2[df2['E'].isin(['two','four'])] #传入布尔向量进行选择

df.query("A>=2") #筛选某一列满足条件的所有行


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM