Python开发之Pandas的使用
时间:2022-07-25
本文章向大家介绍Python开发之Pandas的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、简介
- Pandas 是 Python 中的数据操纵和分析软件包,它是基于Numpy去开发的,所以Pandas的数据处理速度也很快,而且Numpy中的有些函数在Pandas中也能使用,方法也类似。
- Pandas 为 Python 带来了两个新的数据结构,即 Pandas Series(可类比于表格中的某一列)和 Pandas DataFrame(可类比于表格)。借助这两个数据结构,我们能够轻松直观地处理带标签数据和关系数据。
二、创建Pandas Series
可以使用 pd.Series(data, index) 命令创建 Pandas Series,其中data表示输入数据, index 为对应数据的索引,除此之外,我们还可以添加参数dtype来设置该列的数据类型。
python
import pandas as pd #约定俗成的简称
pd.Series(data = [30, 6, 7, 5], index = ['eggs', 'apples', 'milk', 'bread'],dtype=float)
out:
eggs 30.0
apples 6.0
milk 7.0
bread 5.0
dtype: float64
data除了可以输入列表之外,还可以输入字典,或者是直接一个标量。
python
pd.Series(data={'name':'michong','age':18})
out:
name michong
age 18
dtype: object
三、访问和删除Series中的元素
1、访问
一种类似于从列表中按照索引访问数据,一种类似于从字典中按照key来访问value。
python
s = pd.Series(data=8,index=['apple','milk','bread'])
s[0]
out:
8
s['apple']
out:
8
s.loc['apple']
s.iloc[1]
2、修改
修改完记得重新赋值即可
3、删除
python
s.drop(['apple'])
out:
milk 8
bread 8
dtype: int64
.drop()函数并不会修改原来的数据,如果你想要修改原数据的话,可以选择添加参数inplace = True或者是用原数据替换s = s.drop(label)
python
s.drop(['apple'],inplace=True)
四、DataFrame的使用
1、创建DataFrame
pd.DataFrame(data, index, columns)
python
data是数据,可以输入ndarray,或者是字典(字典中可以包含Series或arrays或),或者是DataFrame;
index是索引,输入列表,如果没有设置该参数,会默认以0开始往下计数;
columns是列名,输入列表,如果没有设置该参数,会默认以0开始往右计数;
Code
d = [[1,2],[3,4]]
df = pd.DataFrame(data=d,index=['a','b'],columns=['one','two'])
df
out:
one two
a 1 2
b 3 4
2、访问DataFrame中的元素
- 访问单行python df.loc['a'] df.iloc[0] out: one 1 two 2 Name: a, dtype: int64
- 访问多行
python
df.loc[['a','b']]
df.iloc[[0,1]]
out:
one two
a 1 2
b 3 4
- 访问某一列
python
df.one
df['one']
df.iloc[:,0]
out:
a 1
b 3
Name: one, dtype: int64
- 访问多列
python
df[['one','two']]
df.iloc[:,0:2] #0-2,不包含2,即第三列
out:
one two
a 1 2
b 3 4
- 访问某一个元素
python
df.iloc[0,1] #先访问行再访问列
df['two']['a'] #先访问列再访问行
out:
2
3、删除、增加元素
使用.drop函数删除元素,默认为删除行,添加参数axis = 1来删除列。
- 删除行
python
df.drop(['a'])
out:
one two
b 3 4
- 删除列
python
df.drop('one',axis=1)
out:
two
a 2
b 4
==值得注意的是,drop函数不会修改原数据,如果想直接对原数据进行修改的话,可以选择添加参数inplace = True或用原变量名重新赋值替换。==
- 增加元素 一种是append(),另外一种是insert()
python
df.insert(2,'T',8) #新生成一个列,列名称是T
out:
one two T
a 1 2 8
b 3 4 8
df.insert(2,'F',[9,10]) #设定F列下的每一行的值
out:
one two F T
a 1 2 9 8
b 3 4 10 8
Code
data2 = pd.DataFrame([[8,9,10,11],[6,7,8,9]],
columns=['one','two','F','T']
,index=['c','d'])
df.append(data2,ignore_index=True)
out:
one two F T
0 1 2 9 8
1 3 4 10 8
2 8 9 10 11
3 6 7 8 9
4、重命名
- 修改列的名称python df.rename(columns={'one':'第一列'}) out: 第一列 two F T a 1 2 9 8 b 3 4 10 8
- 修改行的名称
python
df.rename(index={'a':'第一行'})
out:
one two F T
第一行 1 2 9 8
b 3 4 10 8
5、更改索引
Code
可以使用函数set_index(index_label),将数据集的index设置为index_label。
除此之外,还可以使用函数reset_index()重置数据集的index为0开始计数的数列。
6、缺失值(NaN)处理
- 查找NaN
可以使用isnull()和notnull()函数来查看数据集中是否存在缺失数据,在该函数后面添加sum()函数来对缺失数量进行统计。除此之外,还可以使用count()函数对非NaN数据进行统计计数。
- 删除NaN – df.dropna() dropna()函数还有一个参数是how,当how = all时,只会删除全部数据都为NaN的列或行。
==不修改原来的数据==
- 替换NaN
python
df.fillna(0)
out:
0 1 F T one two
a 0.0 0.0 9.0 8.0 1.0 2.0
b 0.0 0.0 10.0 8.0 3.0 4.0
0 5.0 6.0 0.0 0.0 0.0 0.0
Code
使用fillna()函数可以替换NaN为某一值。其参数如下:
value:用来替换NaN的值
method:常用有两种,一种是ffill前向填充,一种是backfill后向填充
axis:0为行,1为列
inplace:是否替换原数据,默认为False
limit:接受int类型的输入,可以限定替换前多少个NaN
五、数据分析流程及Pandas应用
1、打开文件
python
#打开csv文件
pd.read_csv('filename')
#打开excel文件
pd.read_excel('filename')
#处理中文字符的tsv文件
pd.read_csv('filename',sep = 't',encoding = 'utf-8')
2、查看数据
python
#查看前五行
df.head()
#查看尾五行
df.tail()
#查看随机一行
df.sample()
3、查看数据信息
python
#查看数据集行数和列数
df.shape
#查看数据集信息(列名、数据类型、每列的数据量——可以看出数据缺失情况)
df.info()
#查看数据集基本统计信息
df.describe()
#查看数据集列名
df.columns
#查看数据集数据缺失情况
df.isnull().sum()
#查看缺失列数据
df[df['col_name'].isnull()]
#查看数据集数据重复情况
sum(df.duplicated())
#查看重复数据
df[df.duplicated()]
#查看某列分类统计情况
df['col_name'].value_counts()
#查看某列唯一值
df['col_name'].unique()
#查看某列唯一值数量
df['col_name'].nunique()
#以某列对数据集进行排序
df.sort_values(by = 'col_name',ascending = False)#False为由大至小
4、数据筛选
python
#提取某行
df.iloc[row_index]
df.loc['row_name']
#提取某几行
df.iloc[row_index_1:row_index_2]
#提取某列
df['col_name']
#提取某几列
df[['col_name_1','col_name_2']]
#提取某行某列的值
df.iloc[row_index,col_index]
df.loc['row_name','col_name']
#筛选某列中满足某条件的数据
df[df['col_name'] == value]#等于某值的数据,同理满足所有比较运算符
df.query('col_name == value')#代码效果同上
df[(df['col_name_1'] >= value_1) & (df['col_name_2'] != value_2)]#与&,或|
df.query('(col_name_1 >= value_lower) & (col_name_2 <= value_upper)')
df.groupby('col_name').groups #按col_name列进行分组,聚类
5、数据清理
python
#删除某行
df.drop(['row_name'],inplace = True)#若添加inplace = True,修改后的数据会覆盖原始数据
#删除某列
df.drop(['col_name'],axis = 1)
#缺失值的处理
df.fillna(mean_value)#替换缺失值
df.dropna()#删除包含缺失值的行
df.dropna(axis = 1, how = 'all')#只删除所有数据缺失的列
#删除重复值
drop_duplicates(inplace = True)
#更改某行/列/位置数据
用iloc或者loc直接替换修改即可
#更改数据类型
df['datetime_col'] = pd.to_datetime(df['datetime_col'])
df['col_name'].astype(str)#还可以是int/float...
#更改列名
df.rename(columns={'A':'a', 'C':'c'}, inplace = True)
#apply函数
#讲function应用在col_name列,此方法比用for循环快得多得多
df['col_name'].apply(function)
- Selenium2+python自动化61-Chrome浏览器(chromedriver)
- 区块链可以减少社会不平等吗?
- 【干货】不止准确率:为分类任务选择正确的机器学习度量指标(附代码实现)
- python爬虫beautifulsoup4系列1
- 区块链入门教程
- python爬虫beautifulsoup4系列2
- python爬虫beautifulsoup4系列3
- 多元回归模型
- C++ STL之min_element()与max_element()(取容器中的最大最小值)
- RESTful API 设计最佳实践
- python爬虫beautifulsoup4系列4-子节点
- 元胞自动机实现多数分类算法
- 51Nod 1289 大鱼吃小鱼(模拟,经典好题)
- 用Metaclass实现一个精简的ORM框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法