08 Python入门 Lesson8 Pandas
文章目录
- 08 Python入门 Lesson8 Pandas
- 1.Pandas简介
- 2.创建Pandas Series
- 4.访问和删除Series中的元素
- 5.对 Pandas Series 执行算术运算
- 7.创建 Pandas DataFrame
- 8.访问 Pandas DataFrame 中的元素
- 9.处理 NaN
- 11.将数据加载到 Pandas DataFrame 中
- Plus.stack和unstack
1.Pandas简介
Pandas 是 Python 中的数据操纵和分析软件包,它是基于Numpy去开发的,所以Pandas的数据处理速度也很快,而且Numpy中的有些函数在Pandas中也能使用,方法也类似。
Pandas 为 Python 带来了两个新的数据结构,即 Pandas Series(可类比于表格中的某一列)和 Pandas DataFrame(可类比于表格)。借助这两个数据结构,我们能够轻松直观地处理_带标签_数据和_关系_数据。
Series中各个元素的数据类型可以不一致,DataFrame也是如此,这与numpy的ndarray不同。
2.创建Pandas Series
可以使用 pd.Series(data, index) 命令创建 Pandas Series,其中data表示输入数据, index 为对应数据的索引,除此之外,我们还可以添加参数dtype来设置该列的数据类型。
示例:
import pandas as pd
pd.Series(data = [30, 6, 7, 5], index = ['eggs', 'apples', 'milk', 'bread'],dtype=float)
>>>
eggs 30.0 apples 6.0 milk 7.0 bread 5.0 dtype: float64data除了可以输入列表之外,还可以输入字典,或者是直接一个标量:
#data输入字典
pd.Series(data = {'eggs':30,'apples': 6, 'milk':7, 'bread':5},dtype=float)
>>>
apples 6.0 bread 5.0 eggs 30.0 milk 7.0 dtype: float64
#data输入某一标量
pd.Series(data = 7, index = ['eggs', 'apples', 'milk', 'bread'])
>>>
eggs 7 apples 7 milk 7 bread 7 dtype: int644.访问和删除Series中的元素
- 访问
访问Series中的元素有两种方法:
一种类似于从列表中按照索引访问数据,一种类似于从字典中按照key来访问value。
下面看示例:

从上面代码里也能发现,Pandas提供的iloc与loc分别对应着按索引访问和按key访问。
- 修改
因为Series是可更改类型,若想更改其中某一项,只需访问它然后重新赋值即可。
- 删除
可以使用 .drop() 方法删除 Pandas Series 中的条目。Series.drop(label) 方法会从给定 Series 中删除给定的 label。这个label可以是单个label或这是label组成的list。

但需要注意的是,.drop()函数并不会修改原来的数据,如果你想要修改原数据的话,可以选择添加参数inplace = True或者是用原数据替换s = s.drop(label)
5.对 Pandas Series 执行算术运算
和ndarray一样,Series也可以进行元素级的算术运算,也可以使用np中提供的各种运算函数,如sqrt()等等。
这里可以想一下,如果Series中包含字符串,然后再进行乘法会是什么结果?
可以回想下字符串的知识'*'*10的结果是什么?
7.创建 Pandas DataFrame
我们使用pd.DataFrame(data, index, columns)来创建一个DataFrame。
其中:
data是数据,可以输入ndarray,或者是字典(字典中可以包含Series或arrays或),或者是DataFrame;
index是索引,输入列表,如果没有设置该参数,会默认以0开始往下计数;
columns是列名,输入列表,如果没有设置该参数,会默认以0开始往右计数;
示例:

从上述代码中可以看出,字典d中的key被当作列名,value被当作dataframe中的数据。
思考:如果在上述代码中添加一个columns列,如df = pd.DataFrame(data=d,index = ['a','b'],columns = ['col_1','col_2']),会返回什么结果呢?
8.访问 Pandas DataFrame 中的元素
与访问Series中的元素类似,我们可以通过列表式索引访问,也可以通过字典式Key值访问。
- 创建一个DataFrame

- 访问某一行

- 访问多行

- 访问某一列

- 访问多列

使用df.iloc[:,0:2]这种方法只能筛选出连续的列,那如果想要筛选的列分别在1,3,5,10:17怎么办呢?可以搜一下
np.r_的用法。
- 访问某一行列的元素
- 删除元素

我们使用.drop函数删除元素,默认为删除行,添加参数axis = 1来删除列。

值得注意的是,drop函数不会修改原数据,如果想直接对原数据进行修改的话,可以选择添加参数inplace = True或用原变量名重新赋值替换。
- 增加元素
这里介绍了两种方法,一种是append(),另外一种是insert(),这两种方法都比较简单,可类比于python list中的两种方法进行学习。
此外,Pandas还提供了其他更为复杂的做DataFrame融合的函数,比如说concat()、merge()、join()等等,相对难理解一些,我会单独出一份导学详细介绍这几个数据融合函数。
- 更改行列标签
使用函数rename()即可。具体用法如下:

除此之外,还可以使用隐匿函数lambda来对行列标签进行统一处理,比如:

需要注意的是,rename()函数同样不会更改原数据,如果想直接对原数据进行修改的话,可以选择添加参数inplace = True或用原变量名重新赋值替换。
- 更改索引
可以使用函数set_index(index_label),将数据集的index设置为index_label。
除此之外,还可以使用函数reset_index()重置数据集的index为0开始计数的数列。
9.处理 NaN
NaN就是Not a Number的缩写,表示这里有数据缺失。
- 查找NaN
我们可以使用isnull()和notnull()函数来查看数据集中是否存在缺失数据,在该函数后面添加sum()函数来对缺失数量进行统计。除此之外,还可以使用count()函数对非NaN数据进行统计计数。

- 删除NaN
使用dropna(axis)函数可以删除包含NaN的行或列。
dropna()函数还有一个参数是how,当how = all时,只会删除全部数据都为NaN的列或行。
同样,该函数也不会修改原数据集。
- 替换NaN
使用fillna()函数可以替换NaN为某一值。其参数如下:
- value:用来替换NaN的值
- method:常用有两种,一种是
ffill前向填充,一种是backfill后向填充 - axis:0为行,1为列
- inplace:是否替换原数据,默认为False
- limit:接受int类型的输入,可以限定替换前多少个NaN
一般来说,我们常用均值去替换NaN。
还可以使用interpolate()函数按照某一方法来替换NaN,课程中介绍了method为linear时的用法,即忽略索引并将值视为相等间距,这是该函数的默认方法。
11.将数据加载到 Pandas DataFrame 中
df = pd.read_csv(filename) #读取csv文件
df.info() #查看数据集信息
df.head() #查看前五行
df.tail() #查看后五行
df.sample() #查看随机一行
df.describe() #查看数据类型的基本统计信息
df.corr() #查看各列之间的相关系数
df.groupby() #将数据按照某一列进行聚类,后续接数据统计函数,如mean(),sum()等Plus.stack和unstack
- pandas的groupby 之后生成的是这种花括号结构(series 对应 stack 记忆),只有列有索引:
- 如果用了 unstack 会变成这种表格结构,具有行索引和列索引:
















