Pandas常用用法
pandas常用用法
详细内容请进入 pandas官网 查阅文献。
1. pd.read_csv()
常用parameters:
- header : 一般默认为零。表示读进来的表格以第一行作为列名。其他值也是类似的。
- index_col : 表示以什么作为行号。pandas在引入列表的时候默认会以0,1,2,3,4....作为行号。可以指定列表中的某一列作为行号。
- usecols : 指定读进来的列是什么,以列表的形式给出,可以是列号,也可以是[0,1,2]这样的表示读进来0,1,2列。
- names : 以列表形式给出,表示列号只显示出给定名称的列号,其他的隐藏。即你可以指定任一列的列号,可以是你自创的,也可以是列表里本来就有的。
- squeeze : 表示如果传进来的表格只有一列,那么把它压缩成Serias的形式。默认值是False。
- dtype : 指定列的数据形式。eg:
dtype={'PassengerId':np.float64}
感觉比较常用的参数一般就这几个,其他的如果需要可以在官网上查找解释。
2. 常用表格信息描述函数
df.dtypes
可以把表格每一列数据的格式描述出来,eg:
A float64 B datetime64[ns] C float32 D int32 E category F object dtype: object
df.index
把表格的行号列出,包括行号的格式。
df.columns
把表格的列号列出,包括列号的格式。
df.describe()
把每一列的均值,个数,方差,最大最小值列出。非常方便的函数。
A C D count 4.0 4.0 4.0 mean 1.0 1.0 3.0 std 0.0 0.0 0.0 min 1.0 1.0 3.0 25% 1.0 1.0 3.0 50% 1.0 1.0 3.0 75% 1.0 1.0 3.0 max 1.0 1.0 3.0
df.info()
可以给出表格的许多信息,看下面的结果:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 891 entries, 0 to 890 Data columns (total 12 columns): PassengerId 891 non-null int64 Survived 891 non-null int64 Pclass 891 non-null int64 Name 891 non-null object Sex 891 non-null object Age 714 non-null float64 SibSp 891 non-null int64 Parch 891 non-null int64 Ticket 891 non-null object Fare 891 non-null float64 Cabin 204 non-null object Embarked 889 non-null object dtypes: float64(2), int64(5), object(5) memory usage: 83.6+ KB
3. 常用的datafram处理操作。
df[[' ',' ',...]]
''中间的为列的名字,直接列出选中的列
dfdf.A>50]
不好说直接上代码:
df[df['Age']>60][['Sex','Pclass','Age','Survived']] >>> Sex Pclass Age Survived 33 male 2 66.0 0 54 male 1 65.0 0 96 male 1 71.0 0 116 male 3 70.5 0 170 male 1 61.0 0 252 male 1 62.0 0 275 female 1 63.0 1 280 male 3 65.0 0 326 male 3 61.0 0 438 male 1 64.0 0 456 male 1 65.0 0 483 female 3 63.0 1 493 male 1 71.0 0 545 male 1 64.0 0 555 male 1 62.0 0 570 male 2 62.0 1 625 male 1 61.0 0 630 male 1 80.0 1 672 male 2 70.0 0 745 male 1 70.0 0 829 female 1 62.0 1 851 male 3 74.0 0
即是以某一列的值为条件进行筛选。
多个条件进行筛选。
for i in range(4): print(i,len(df[ (df['Sex']=='male') & (df['Pclass']==i)])) >>> 0 0 1 122 2 108 3 347
&
符号表示与,条件有两个,len()表示长度。
df.dropna() :
把表格中有nan或者na的行去掉。
pramaters:axis=0,how='any'
还有其他参数但是并不常用。'any'表示只要行或者列出现了nan则把该行或者该列去掉。如果为'all'表示必须全是nan才去掉。
df.fillna(value) :
表示给nan值填充值。value=0表示给nan填充0值
df.isnull() :
返回一个列表如果有值为nan返回True,否则返回False.
A B C D E 2013-01-01 False False False False False 2013-01-02 False False False True False 2013-01-03 False False False False True 2013-01-04 False False False False False 2013-01-05 False False False False False 2013-01-06 False False False False False ## 可以通过选择某一列为Nan的情况下对其他数据进行查看 df[df.Age.isnull()].head(5)['Name'] >>> 5 Moran, Mr. James 17 Williams, Mr. Charles Eugene 19 Masselmani, Mrs. Fatima 26 Emir, Mr. Farred Chehab 28 O'Dwyer, Miss. Ellen "Nellie" Name: Name, dtype: object
df.T :
转置,即列表的行与列互换。
df.loc[] :
表示按照标签来选择数据。
a.loc['one']则会默认表示选取行为'one'的行a.loc[:,['a','b']表示选取所有的行以及columns为a,b的列;
a.loc[['one','two'],['a','b']]表示选取'one'和'two'这两行以及columns为a,b的列;
a.loc['one','a']与a.loc[['one'],['a']]作用是一样的,不过前者只显示对应的值,而后者会显示对应的行和列标签。
df.iloc[] :
表示按照位置进行选择。
a.iloc[[0,2],[1,2]]
表示选取0行1列和2行2列的数据。
df.values :
把一个dataframe类型转化为numpy的array形式。很简单
df.replace() :
简单粗暴,把列表里的某一个值替换为另一个值。
df.replace('male',0).head(3)['Sex'] >>> 0 0 1 female 2 female Name: Sex, dtype: object
该函数还有一些其他参数:regrex,method等,详细可查阅官网,这里给出一些常用用法。
#选择某一列对不同的值进行不同的替换,采用字典嵌套的形式。 encode_setting = {'Embarked':{'S':1, 'C': 2, 'Q': 3, 'Unknown':0}} df.replace(encode_setting).head(3)[['Embarked']] >>> Embarked 0 1.0 1 2.0 2 1.0 #对多个值进行替换 df.replace({'male':1,'female':0}).head(3)[['Sex']] >>> Sex 0 1 1 0 2 0
df.drop(axis,labels) :
表示扔掉某一行或者一列,axis指定行或者列,labels指定标签。labels可以用列表的方式来给定多个行或者列
value_counts() :
可以计算出每个取值在列表中出现的次数
df.groupby :
可以按照你所指定的列对其不同的值进行分组,很强大的功能,这里给出代码更好理解。
df.groupby(['Survived','Pclass']).sum() ## 按照Survived和Pclassd的取值,对其他的项进行相应的求和操作,不是数值型的不计数 df.groupby(['Survived','Pclass']).size() ## size表示按照Survived和Pclass的取值,进行分别计数。除了size(),还有mean(),max(),min(),std()等 >>> Survived Pclass 0 1 80 2 97 3 372 1 1 136 2 87 3 119 dtype: int64 df.groupby(['Survived','Pclass']).size()[0][1] ## 这里返回的是一个类似矩阵的存在。[0]表示Survived=0,[1]表示Pclass=1,这里前后顺序和你给出列的顺序有关。 >>> 80 ##如果给定的列不止一个,会有多重索引(Multiindex),这里可以这样操作来选取对应的值。 a=df.groupby(['Survived','Sex',]).std() a.index >>> ultiIndex(levels=[[0, 1], ['female', 'male']], labels=[[0, 0, 1, 1], [0, 1, 0, 1]], names=['Survived', 'Sex']) ## 我们可以根据levels进行选取 a.xs([0,'female'],level=['Survived','Sex']) >>> PassengerId Pclass Age SibSp Parch Fare Survived Sex 0 female 263.522063 0.450309 13.618591 1.814635 1.391442 24.821287 ## 接下来就可以根据需求选择列得到数值,同时可以加上.values来将其变为np.array的形式。这里的索引有俩个即Survived和Sex,行名就是levels,所以也可以用loc选择行和列进行选取
df.isin() :
选出给定列中某些值的特定行
df[df['Sex'].isin(['male'])]