乐趣区

关于数据分析:Pandas学习笔记02数据处理高阶用法

作者:幻好

起源:恒生 LIGHT 云社区

Pandas 是一个 Python 软件库,它提供了大量能使咱们疾速便捷地解决数据的函数和办法。在本文将次要介绍 Pandas 的实用数据处理操作。

系列文章:

【Pandas 学习笔记 01】弱小的剖析结构化数据的工具集

【Pandas 学习笔记 02】- 解决数据实用操作

概述

Pandas 是基于 NumPy 构建的库,在数据处理方面能够把它了解为 NumPy 加强版,同时 Pandas 也是一项开源我的项目。它用于数据挖掘和数据分析,同时也提供数据荡涤性能。

在本文中,次要介绍 Pandas 在数据处理中的 高阶用法,包含:数据的合并、分组和拆分等用法。如果学过数据库的 SQL 语法,本文了解起来会十分快。

数据合并

数据筹备

首先定义一个 DataFrame 数据集:

import pandas as pd

df_a = pd.DataFrame(columns=['name', 'rank'], data=[['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)

# ======== 打印 ========
     name  rank  year
0    java     2  2020
1  python     3  2021
2  golang     4  2022
# 通过指定 columns 中的 name 左连贯
df_tmp = pd.merge(df_a, df_b, on='name', how='left')
print(df_tmp)

# ======== 打印 ========
     name  rank    year
0       C     1     NaN
1    java     2  2020.0
2  python     3  2021.0
3  golang     4  2022.0
# 通过指定 columns 中的 name 右连贯
df_tmp = pd.merge(df_a, df_b, on='name', how='right')
print(df_tmp)

# ======== 打印 ========
     name  rank  year
0    java     2  2020
1  python     3  2021
2  golang     4  2022
# 如果合并两个 DataFrame 不含公共的 columns,能够间接指定匹配的字段
df_c = pd.DataFrame(columns=['name1', 'year'], data=[['java', 2020], ['python1', 2021], ['golang1', 2022]])
df_tmp = pd.merge(df_a, df_c, left_on='name', right_on='name1')
print(df_tmp)

# ======== 打印 ========
   name  rank name1  year
0  java     2  java  2020

数据分组

数据筹备

首先定义一个 DataFrame 数据集:

import pandas as pd

df_a = pd.DataFrame(columns=['name', 'nums'], data=[['python', 1], ['java', 2], ['python', 3], ['java', 4]])

通过 group() 办法能对 DataFrame 数据集进行分组操作,分组后还能进行求和、取平均值等操作,如下实例:

# 获取分组后的数据集中每个数据的数量
df_tmp = df_a.groupby('name').size()
print(df_tmp)

# ======== 打印 ========
name
java      2
python    2
dtype: int64
# 将分组后的数据集,依据 nums 字段进行求和
df_tmp = df_a.groupby('name')['nums'].sum()
print(df_tmp)

# ======== 打印 ========
name
java      6
python    4
Name: nums, dtype: int64
# 获取分组后的数据集的大小
df_tmp = df_a.groupby('name').size()
print(df_tmp)

# ======== 打印 ========
name
java      3
python    2
Name: nums, dtype: int64

数据拆分

数据筹备

首先定义一个 DataFrame 数据集:

import pandas as pd

df_a = pd.DataFrame(columns=['name', 'rank'], data=[['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)

# ======== 打印 ========
        0     1
0       C   no1
1    java   no2
2  python   no3
3  golang  None
# 数据拆分,对拆分后的数据再次与原数据合并
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)

# ======== 打印 ========
         name  rank       0     1
0       C_no1     1       C   no1
1    java_no2     2    java   no2
2  python_no3     3  python   no3
3      golang     4  golang  None

数据可视化

在应用 Pandas 解决数据的过程中,为了更直观的展现数据的线性关系,咱们能够引入 matplotlib 库将咱们的数据变成相干图形

# plot() 办法生成相应的线性图形
df_a = pd.DataFrame(columns=['name', 'rank'], data=[['C_no1', 1], ['java_no2', 2], ['python_no3', 3], ['golang', 4]])
df_a.plot()

总结

本文次要介绍 Pandas 工具集的高阶操作,操作原理与数据库中的 SQL 有着殊途同归之妙,可能帮忙咱们解决日常数据的剖析解决等操作。

退出移动版