丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述Pandas学习笔记02- 数据处理高阶用法相关的知识,希望能为你提供帮助。
概述Pandas 是基于 NumPy 构建的库,在数据处理方面可以把它理解为 NumPy 加强版,同时 Pandas 也是一项开源项目。它用于数据挖掘和数据分析,同时也提供数据清洗功能。
在本文中,主要介绍Pandas在数据处理中的高阶用法,包括:数据的合并、分组和拆分等用法。如果学过数据库的SQL语法,本文理解起来会非常快。
数据合并
数据准备【Pandas学习笔记02- 数据处理高阶用法】首先定义一个 DataFrame
数据集:
import pandas as pddf_a = pd.DataFrame(columns=[name, rank], data=https://www.songbingjia.com/android/[[C, 1], [java, 2], [python, 3], [golang, 4]])
df_b = pd.DataFrame(columns=[name, year], data=[[java, 2020], [python, 2021], [golang, 2022]])
通过
merge()
方法能对DataFrame数据集进行合并,通过内连接、外连接、左连接、右连接等方式,如下实例:merge方法默认是内连接取交集,通过
how
指定连接类型,on
指定连接字段# 通过指定 columns 中的 name 内连接
df_tmp = pd.merge(df_a, df_b, on=name, how=outer)
print(df_tmp)# ========打印========
namerankyear
0java22020
1python32021
2golang42022
# 通过指定 columns 中的 name 左连接
df_tmp = pd.merge(df_a, df_b, on=name, how=left)
print(df_tmp)# ========打印========
namerankyear
0C1NaN
1java22020.0
2python32021.0
3golang42022.0
# 通过指定 columns 中的 name 右连接
df_tmp = pd.merge(df_a, df_b, on=name, how=right)
print(df_tmp)# ========打印========
namerankyear
0java22020
1python32021
2golang42022
# 如果合并两个 DataFrame 不含公共的 columns ,可以直接指定匹配的字段
df_c = pd.DataFrame(columns=[name1, year], data=https://www.songbingjia.com/android/[[java, 2020], [python1, 2021], [golang1, 2022]])
df_tmp = pd.merge(df_a, df_c, left_on=name, right_on=name1)
print(df_tmp)# ========打印========
namerank name1year
0java2java2020
数据分组 数据准备首先定义一个
DataFrame
数据集:import pandas as pddf_a = pd.DataFrame(columns=[name, nums], data=https://www.songbingjia.com/android/[[python, 1], [java, 2], [python, 3], [java, 4]])
通过
group()
方法能对DataFrame数据集进行分组操作,分组后还能进行求和、取平均值等操作,如下实例:# 获取分组后的数据集中每个数据的数量
df_tmp = df_a.groupby(name).size()
print(df_tmp)# ========打印========
name
java2
python2
dtype: int64
# 将分组后的数据集,根据 nums 字段进行求和
df_tmp = df_a.groupby(name)[nums].sum()
print(df_tmp)# ========打印========
name
java6
python4
Name: nums, dtype: int64
# 获取分组后的数据集的大小
df_tmp = df_a.groupby(name).size()
print(df_tmp)# ========打印========
name
java3
python2
Name: nums, dtype: int64
数据拆分 数据准备首先定义一个
DataFrame
数据集:import pandas as pddf_a = pd.DataFrame(columns=[name, rank], data=https://www.songbingjia.com/android/[[C_no1, 1], [java_no2, 2], [python_no3, 3], [golang, 4]])
通过
split()
方法能对DataFrame数据集中某列数据进行拆分操作,如下实例:# 数据拆分,对 columns 中的某列的数据某个符号匹配拆分,expand:为True可以直接将分列后的结果转换成DataFrame
df_tmp = df_a[name].str.split(_, 1, expand=True)
print(df_tmp)# ========打印========
01
0Cno1
1javano2
2pythonno3
3golangNone
# 数据拆分,对拆分后的数据再次与原数据合并
df_tmp = pd.merge(df_a, df_a[name].str.split(_, 1, expand=True), how=left, left_index=True, right_index=True)
print(df_tmp)# ========打印========
namerank01
0C_no11Cno1
1java_no22javano2
2python_no33pythonno3
3golang4golangNone
数据可视化在使用 Pandas 处理数据的过程中,为了更直观的展示数据的线性关系,我们可以引入
matplotlib
库将我们的数据变成相关图形# plot() 方法生成相应的线性图形
df_a = pd.DataFrame(columns=[name, rank], data=https://www.songbingjia.com/android/[[C_no1, 1], [java_no2, 2], [python_no3, 3], [golang, 4]])
df_a.plot()
文章图片
总结本文主要介绍 Pandas 工具集的高阶操作,操作原理与数据库中的SQL有着异曲同工之妙,能够帮助我们解决日常数据的分析处理等操作。
推荐阅读
- 云联网体验
- 「百毒不侵」面试官最喜欢问的13种Vue修饰符
- [实战教学]将log.error的日志输送到钉钉群告警
- OpenHarmony3.0在树莓派3B上的烧录与通讯
- 云端干货|如何使用Docker制作镜像
- Spark StreamingSpark Day10(Spark Streaming 学习笔记)
- 如何获得当前的post类型在functions.php中以便全局使用()
- 如何使另一个woocommerce CSS主题放入我的主主题()
- 如何在WordPress中强制使用https