【Python】dataframe画图/可视化

在用dataframe计算出统计结果后,如果需要用画图的形式进行数据展示,该如何画以下类型的图片:柱状图、折线图、散点图、直方图、箱型图等,以及如何在一张图里画多张图的画法

1. 柱状图

1.1 最基础的绘图方法

import matplotlib.pyplot as plt

# 创建一个示例 DataFrame
data = {'A': [10, 20, 30], 'B': [15, 25, 35], 'C': [20, 30, 40]}
df = pd.DataFrame(data)

# 绘制柱状图
df[['A','C']].plot(kind='bar')
plt.show()

 结果:

1.2 规定分类的类型

假如数据表为班级和班级平均成绩,给每个班级的平均成绩画柱状图的话,可以使用:

import matplotlib.pyplot as plt

data = {'班级': ['一班','二班','三班','四班','五班'], '成绩': [85, 90, 75,92,88]}
df = pd.DataFrame(data)

# 绘制柱状图
fig, ax = plt.subplots(figsize=(8, 6))  # 修改图片大小,这里是宽 8 高 6

plt.bar(df['班级'], df['成绩'], color='green')

# 添加数字标签
for i, v in enumerate(df['成绩']):
    ax.text(i, v+0.1, round(v,1), ha='center')  # 在柱子上方添加数字标签

# 竖着显示班级名字等
ax.set_xticklabels(df['班级'], rotation='vertical', fontsize=12)    
    
plt.xlabel('班级', fontsize=13)
plt.ylabel('成绩', fontsize=13)
plt.title('各班级平均成绩', fontsize=13)
plt.show()

结果:

1.3 如何在一张图里画多个图

假如有一个数据表,A列是“是否及格”,B列是“A班人员是否及格的占比”,C列是“B班人员是否及格的占比”,需要在一张图里画两个柱状图,一左一右放在一起进行比较:

import pandas as pd
import matplotlib.pyplot as plt

# 设定图形的位置
plt.figure(figsize=(10, 6))
ax1 = plt.subplot(121)  # 1 行 2 列,第一个位置
ax2 = plt.subplot(122)  # 1 行 2 列,第二个位置

# 绘制第一组柱状图
bars1 = ax1.bar(df['是否及格'], df['A班_人员占比'], label='Group1',color='green')
for i, v in enumerate(df['A班_人员占比']):
    ax1.text(i, v+0.2, round(v,1), ha='center')  # 在柱子上方添加数字标签

ax1.set_ylim(0, 90)
ax1.set_title('A班',fontsize=13)
#ax1.set_xlabel('Index')
ax1.set_ylabel('百分比',fontsize=13)


# 绘制第二组柱状图
bars2 = ax2.bar(df['是否及格'], df['B班_人员占比'], label='Group2')
for i, v in enumerate(df['B班_人员占比']):
    ax2.text(i, v+0.2, round(v,1), ha='center')  # 在柱子上方添加数字标签

ax2.set_ylim(0, 90)
ax2.set_title('B班',fontsize=13)
#ax2.set_xlabel('Index')
ax2.set_ylabel('百分比',fontsize=13)

# 调整布局,使图形更美观
plt.suptitle('两个班级学生是否及格的占比情况',fontsize=15)  # 这里添加了总的标题
plt.tight_layout()

# 显示图形
plt.show()

结果:

2. 直方图

如果想看一下数据的整体分布是什么样子的,是左偏还是右偏,可以画一个直方图。

比如想要调研一下一个群体里每个人距离上次出去玩的天数的分布:

import pandas as pd
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8, 6))

# 绘制列 'A' 的直方图
plt.hist(df['距离上次出去玩的天数'],bins=50, edgecolor='black', alpha=0.7)

plt.show()

结果为:

3. 折线图

假如要在一张图里画多条折线图,数据表的样式类似于:A列是3个年份,B到D列是每个班级的人数;给每个班级都画一条人数变化折线图

import pandas as pd
import matplotlib.pyplot as plt

# 提取班级列
classes = df.columns[1:]

# 为每个班级绘制折线图
for class_name in classes:
    plt.plot(df['year'], df[class_name], label=class_name)

plt.xlabel('年份')
plt.ylabel('人数')
plt.title('各班级人数折线图')
plt.legend()
plt.show()

结果:

4. 箱型图

如果有好多组数据,想要看一下每一组数据的分布,可以用箱型图:

# 用于数值计算的库
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats
# 用于绘图的库
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()
# 用于估计统计模型的库
import statsmodels.formula.api as smf
import statsmodels.api as sm
# 设置浮点数打印精度
%precision 3
# 在Jupyter Notebook 里显示图形
%matplotlib inline


# 以下两句防止中文显示为窗格
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"] = False


fig,axes=plt.subplots(1,1,sharey=True)
sns.boxplot(x="首次得分",y="最终得分",palette="Set3",data=df_分数,order=[1,2,2.5,3,3.5,5,'OL'])

plt.xlabel('首次得分')
plt.ylabel('最终得分')

结果:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的DataFrame可以使用matplotlib和seaborn等库进行绘图。其中,matplotlib是Python中最常用的绘图库之一,可以绘制各种类型的图表,包括折线图、散点图、柱状图、饼图等。而seaborn则是在matplotlib基础上进行了封装,提供了更加美观和易用的接口,可以绘制更加复杂的图表,如热力图、密度图等。使用这些库,可以轻松地将DataFrame中的数据可视化,更好地理解和分析数据。 ### 回答2: Python是一种面向对象、高级的动态编程语言,具有简洁、易学、可读性强等特点。在数据处理方面,Python具备强大的库支持,其中pandas数据处理库主要用于数据处理和数据分析。pandas库的Dataframe是其主要数据结构之一,可以用于处理二维数据。在数据可视化方面,使用Dataframe可以方便地进行图形化展示,让数据更加直观生动。下面我将介绍如何使用Python中的Dataframe进行画图。 首先,我们需要导入pandas库和matplotlib库。pandas库用于数据处理,在数据可视化方面可以与matplotlib库结合使用。如下所示: ```python import pandas as pd import matplotlib.pyplot as plt ``` 然后,我们需要创建一个Dataframe对象。这里我们以一个简单的例子为例,创建一个包含年份、名称和价格的Dataframe。如下所示: ```python data = {'year':[2018,2019,2020,2021], 'name':['A','B','C','D'], 'price':[100,200,300,400]} df = pd.DataFrame(data) ``` 接着,我们可以使用matplotlib库中的plot函数来绘制线性图。如下所示: ```python plt.plot(df['year'], df['price']) plt.show() ``` 这段代码会生成一个简单的线性图,其中x轴表示年份,y轴表示价格。 除了线性图外,我们还可以使用其他类型的图形,比如散点图、柱状图、饼图等等。这里我们就以柱状图为例,说明绘制步骤。如下所示: ```python plt.bar(df['name'], df['price']) plt.show() ``` 这段代码会生成一个简单的柱状图,其中x轴表示名称,y轴表示价格。 除了基本的plot、bar函数外,matplotlib库还包括了很多其他的函数,如scatter、hist、pie、boxplot等等,每一个函数都可以绘制具有不同特征的图形。因此,使用Dataframe绘制图形,可以让我们更加方便地进行可视化分析和展示。 ### 回答3: Python的数据分析库pandas中的DataFrame对象提供了非常方便、灵活的数据处理和分析能力。而且,pandas中也内置了matplotlib库,使得我们可以在DataFrame对象上进行直接的数据可视化。 在pandas中,我们可以使用DataFrame.plot()方法进行画图。该方法可以绘制许多不同类型的图表,如线状图,柱状图和散点图等。 以下是绘制DataFrame中的一列的方法: ```python import pandas as pd df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}) df['a'].plot() ``` 通过以上代码,我们将DataFrame的第一列作为x轴,第二列作为y轴,绘制了一条线。 这是在DataFrame上绘制柱状图的方法: ```python df.plot(x='a', y='b', kind='bar') ``` 上述代码中,“x”和“y”参数分别指定绘制图表时要使用的DataFrame的列。而“kind”参数则指定绘制哪种类型的图表。 还有其他的“kind”种类,如“scatter”绘制散点图,“hist”绘制柱状图等,通过查阅pandas文档,我们可以了解到所有可用参数及其对应的作用。 除此之外,除了plot()方法外,pandas还有其他绘图库,如Seaborn,它提供了更加高级的绘图功能。 总结来说,pandas中的DataFrame对象以及其内置的matplotlib库为我们提供了非常方便、灵活的数据可视化能力,我们可以更快地对数据有直观的了解和把握,在数据分析和可视化方面更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值