08 -Python入门- Lesson8 Pandas

08 Python入门 Lesson8 Pandas

本节好多内容参考了 Alien大大 的新版笔记,衷心感谢。

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: float64 

data除了可以输入列表之外,还可以输入字典,或者是直接一个标量:

#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: int64 

4.访问和删除Series中的元素

  • 访问

访问Series中的元素有两种方法:

一种类似于从列表中按照索引访问数据,一种类似于从字典中按照key来访问value

下面看示例:
在这里插入图片描述

从上面代码里也能发现,Pandas提供的ilocloc分别对应着按索引访问和按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

-c

  • 访问某一行

在这里插入图片描述

  • 访问多行

在这里插入图片描述

  • 访问某一列

在这里插入图片描述

  • 访问多列

在这里插入图片描述

使用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为某一值。其参数如下:

  1. value:用来替换NaN的值
  2. method:常用有两种,一种是ffill前向填充,一种是backfill后向填充
  3. axis:0为行,1为列
  4. inplace:是否替换原数据,默认为False
  5. limit:接受int类型的输入,可以限定替换前多少个NaN

一般来说,我们常用均值去替换NaN。

还可以使用interpolate()函数按照某一方法来替换NaN,课程中介绍了method为linear时的用法,即忽略索引并将值视为相等间距,这是该函数的默认方法。更多method及解读请戳pandas.DataFrame.interpolate

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里的stack和unstack翻到一个特别巧妙的解释:/stack&unstack/
  • pandas的groupby 之后生成的是这种花括号结构(series 对应 stack 记忆),只有列有索引:
    在这里插入图片描述
  • 如果用了 unstack 会变成这种表格结构,具有行索引和列索引:
    在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值