这篇说一下pandas,numpy主要做矩阵处理工作,pandas主要做数据处理,pandas在后续python数据处理工作中占挺大一部分比例,本篇就记录一下pandas的基础操作。(说明一下,本篇主要记录pandas的数据处理方式,所做的数据处理和本数据集没有任何联系。)
pandas 的主要数据类型为Series和DataFrame。Series是一维数据,有点像是带着索引的ndarry,DataFrame为矩阵格式,而且每一列有不同的数据格式,这点与ndarry明显差别,而且DataFrame行与列均具有索引。
一、数据读取
接下来用pandas读取一个csv格式的文件,泰坦尼克的数据。
import pandas as pd
titanic = pd.read_csv('train.csv')
首先导入pandas库,并且为了方便使用,进行重命名。
然后使用read_csv方法对文件进行读取。
使用head方法,默认显示数据的前5行。
titanic.head()
![9038721b15307a5685dae4ad3a9a7f5d.png](https://img-blog.csdnimg.cn/img_convert/9038721b15307a5685dae4ad3a9a7f5d.png)
这样方便我们快速了解数据。也可以读取后几行。
titanic.tail(3)#读取尾巴
![319277bf895da61bd21ef561aea116ee.png](https://img-blog.csdnimg.cn/img_convert/319277bf895da61bd21ef561aea116ee.png)
titanic.info()
![3daa9968080bd36c94d2c36db0bb4d5f.png](https://img-blog.csdnimg.cn/img_convert/3daa9968080bd36c94d2c36db0bb4d5f.png)
二、索引
接下来是数据索引,需要用到loc函数。
titanic.loc[0]
![16f833e52e6b181719a47e5f91380a5d.png](https://img-blog.csdnimg.cn/img_convert/16f833e52e6b181719a47e5f91380a5d.png)
DataFrame会将首行默认为是列名,想要取某一列的数据,只需传入该列的列名即可。
titanic['Name']
![3044b54f3fdcce92f1bd8e76f72a390f.png](https://img-blog.csdnimg.cn/img_convert/3044b54f3fdcce92f1bd8e76f72a390f.png)
titanic.iloc[[1,4],[3,5]]
![5373d1136dbfc5d6cfe06df4593c00e2.png](https://img-blog.csdnimg.cn/img_convert/5373d1136dbfc5d6cfe06df4593c00e2.png)
提取列名columes方法,将数据的列名进行提取,tolist方法可以将提取的列名生成为list格式。
titanic.columns.tolist()
![856674b702bf9576cd43372136bcbc16.png](https://img-blog.csdnimg.cn/img_convert/856674b702bf9576cd43372136bcbc16.png)
做一个对本数据毫无意义,不过以后可能用到的,对列名进行筛选,然后将筛选过的列名对数据进行索引,随便选个例子,找出以e结尾的列名,并且进行数据索引。
columns = titanic.columns.tolist()
new_columns = []
for i in columns:
if i.endswith('e'):
new_columns.append(i)
new_df = titanic[new_columns]
new_df.head()
![548a1fc8cdf0f735e233720b3ed589a6.png](https://img-blog.csdnimg.cn/img_convert/548a1fc8cdf0f735e233720b3ed589a6.png)
三、运算
和ndarry一样,可以对浮点型或整数型数据进行加减乘除运算。
titanic.Fare*10
![67b4bf670020b431eb65ce2d8a13c746.png](https://img-blog.csdnimg.cn/img_convert/67b4bf670020b431eb65ce2d8a13c746.png)
或者两个整数或浮点型的列进行加减乘除,会将对应位置的列的数据进行处理。
titanic.PassengerId*titanic.Fare
![b065f284e724549776cfe0ea7041aee4.png](https://img-blog.csdnimg.cn/img_convert/b065f284e724549776cfe0ea7041aee4.png)
titanic['new_column'] = titanic.PassengerId*titanic.Fare
titanic.head()
![f093eaed2a7ab40ae2913b5dfb02ee9b.png](https://img-blog.csdnimg.cn/img_convert/f093eaed2a7ab40ae2913b5dfb02ee9b.png)
可以将处理过新生成的列增加近DataFrame。
print(titanic['Age'].max())
print(titanic['Age'].min())
print(titanic['Age'].mean())
![91c28b431045a3fb2d1a6808f5ae581d.png](https://img-blog.csdnimg.cn/img_convert/91c28b431045a3fb2d1a6808f5ae581d.png)
和numpy类似,可以对需要的列求最大值、最小值,平均值等
四、数据处理。
对制定列进行排序,适用sort_values方法。Age为指定要排序的列。inplace=True,为新生成一个DataFrame。ascending=Fales为从大到小排。默认为True从小到大排。空值会按最小值进行计算。
titanic.sort_values('Age',inplace=True,ascending=False)
titanic.Age
![b468f66490c269d8d45aecf7970e5c2e.png](https://img-blog.csdnimg.cn/img_convert/b468f66490c269d8d45aecf7970e5c2e.png)
缺失值判断,使用isnull函数。
titanic.Age.isnull()
![59fd5347c23f2416da637d1a9956489b.png](https://img-blog.csdnimg.cn/img_convert/59fd5347c23f2416da637d1a9956489b.png)
对缺失值进行补充用到fillna函数。
titanic['Age']=titanic['Age'].fillna(titanic['Age'].mean())
titanic.Age.isnull()#使用平均值对空值进行填充。
![e89da7a22a800c27c3298e86622fe30c.png](https://img-blog.csdnimg.cn/img_convert/e89da7a22a800c27c3298e86622fe30c.png)