Python 数据分析(四):Pandas 进阶

简介: Python 数据分析(四):Pandas 进阶

1. 概述

我们在上一篇文章初识 Pandas中已经对 Pandas 作了一些基本介绍,本文我们进一步来学习 Pandas 的一些使用。

2. 缺失项

在现实中我们获取到的数据有时会存在缺失项问题,对于这样的数据,我们通常需要做一些基本处理,下面我们通过示例来看一下。

import numpy as np
from pandas import Series, DataFrame

s = Series(['1', '2', np.nan, '3'])
df = DataFrame([['1', '2'], ['3', np.nan], [np.nan, 4]])
print(s)
print(df)
#  清除缺失项
print(s.dropna())
print(df.dropna())
# 填充缺失项
print(df.fillna('9'))
print(df.fillna({
   0:'5', 1:'6'}))

3. 分组聚合

我们通过示例来了解一下分组、聚合操作。

from pandas import DataFrame

df = DataFrame({
   'name':['张三', '李四', '王五', '赵六'],
                'gender':['男', '女', '男', '女'],
                'age':[22, 11, 22, 33]})
# 根据 age 分组
gp1 = df.groupby('age')
# 根据 age、gender 分组
gp2 = df.groupby(['age', 'gender'])
# 根据 gender 进行分组,将 name 作为分组的键
gp3 = df['gender'].groupby(df['name'])
# 查看分组
print(gp2.groups)
# 分组数量
print(gp2.count())
# 选择分组
print(gp2.get_group((22, '男')))
print('---------')
# 聚合
gp4 = df.groupby(df['gender'])
# 和
print(gp4.sum())
# 平均值
print(gp4.mean())
# 最大值
print(gp4.max())
# 最小值
print(gp4.min())
# 同时做多个聚合运算
print(gp4.agg(['sum', 'mean']))

4. 数据合并

Pandas 具有高性能内存中连接操作,与 SQL 相似,它提供了 merge() 函数作为 DataFrame 对象之间连接操作的入口,我们通过示例来看一下。

from pandas import DataFrame
import pandas as pd

df1 = DataFrame({
   'A':[2, 4, 5], 'B':[1, 2, 3], 'C':[2, 3, 6]})
df2 = DataFrame({
   'D':[1, 3, 6], 'E':[2, 5, 7], 'F':[3, 6, 8]})
df3 = DataFrame({
   'G':[2, 3, 6], 'H':[3, 5, 7], 'I':[4, 6, 8]})
df4 = DataFrame({
   'G':[1, 3, 5], 'H':[4, 6, 8], 'I':[5, 7, 9]})
# 左连接(以 d1 为基础)
print(df1.join(df2, how='left'))
# 右连接
print(df1.join(df2, how='right'))
# 外连接
print(df1.join(df2, how='outer'))
# 合并多个 DataFrame
print(df3.join([df1, df2]))
# 指定列名进行合并
print(pd.merge(df3, df4, on='G'))
print(pd.merge(df3, df4, on=['G', 'H']))
print(pd.merge(df3, df4, how='left'))
print(pd.merge(df3, df4, how='right'))
print(pd.merge(df3, df4, how='outer'))

5. 数据可视化

Pandas 的 Series 和 DataFrame 的绘图功能是包装了 matplotlib 库的 plot() 方法实现的,下面我们通过示例来看一下。

5.1 折线图

折线图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(10,2), columns=list('AB'))
df.plot()
plt.show()

看一下效果:

5.2 条形图

纵置条形图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df.plot.bar()
plt.show()

看一下效果:

image.png

横置条形图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df.plot.barh()
plt.show()

看一下效果:
image.png

5.3 直方图

直方图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame({
   'A':np.random.randn(800)+1, 'B':np.random.randn(800)}, columns=list('AB'))
df.plot.hist(bins=10)
plt.show()

看一下效果:

image.png

我们还可以将 A、B 分开显示,代码实现如下:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame({
   'A':np.random.randn(800)+1, 'B':np.random.randn(800)}, columns=list('AB'))
df.hist(bins=10)
plt.show()

看一下效果:

image.png

5.4 散点图

散点图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(20, 2), columns=list('AB'))
df.plot.scatter(x='A', y='B')
plt.show()

看一下效果:

image.png

5.5 饼图

饼图代码实现如下所示:

import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.DataFrame([30, 20, 50], index=list('ABC'), columns=[''])
df.plot.pie(subplots=True)
plt.show()

看一下效果:

image.png

相关文章
|
10天前
|
数据挖掘 PyTorch TensorFlow
|
11天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas进行数据分析基础
使用Python和Pandas进行数据分析基础
33 5
|
1天前
|
机器学习/深度学习 数据挖掘 大数据
大数据时代的“淘金术”:Python数据分析+深度学习框架实战指南
在大数据时代,数据被视为新财富源泉,而从海量信息中提取价值成为企业竞争的核心。本文通过对比方式探讨如何运用Python数据分析与深度学习框架实现这一目标。Python凭借其强大的数据处理能力及丰富库支持,已成为数据科学家首选工具;而TensorFlow和PyTorch等深度学习框架则为复杂模型构建提供强有力的技术支撑。通过融合Python数据分析与深度学习技术,我们能在各领域中发掘数据的无限潜力。无论是商业分析还是医疗健康,掌握这些技能都将为企业和社会带来巨大价值。
19 6
|
14天前
|
数据可视化 数据挖掘 数据处理
Python中数据可视化的魔法——使用Matplotlib和Pandas
【9月更文挑战第5天】在Python的世界里,数据可视化是连接复杂数据与人类直觉的桥梁。本篇文章将带领读者探索如何使用Matplotlib和Pandas这两个强大的库来揭示数据背后的故事。我们将从基础概念开始,逐步深入到高级技巧,让每一位读者都能轻松创建引人入胜的数据可视化图表,使数据分析变得既直观又有趣。
57 14
|
8天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
9天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
23 5
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的入门指南
【9月更文挑战第11天】本文旨在为初学者提供一条清晰的道路,通过Python探索数据科学的奇妙世界。我们将从基础语法讲起,逐步深入到数据处理、可视化以及机器学习等高级话题。文章不仅分享理论知识,还将通过实际代码示例,展示如何应用这些知识解决实际问题。无论你是编程新手,还是希望扩展技能的数据分析师,这篇文章都将是你宝贵的资源。
|
10天前
|
数据采集 数据挖掘 数据处理
使用Python和Pandas处理CSV数据
使用Python和Pandas处理CSV数据
40 5
|
8天前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
18天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
45 5