Python 之 histogram直方图(pandas, pd)

该博客展示了如何利用Python的pandas、matplotlib和Seaborn库,对鸢尾花数据集进行分组和堆叠直方图的绘制。首先,通过pandas读取CSV文件并根据鸢尾花类别分组绘制直方图,然后创建堆叠直方图展示不同类别的花萼长度分布。最后,使用Seaborn的histplot函数创建堆叠直方图,进一步增强数据可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iris.csv

Histogram

import matplotlib.pyplot as plt
import pandas as pd

iris_df = pd.read_csv("iris.csv")
iris_df["sepallength"].hist(by=iris_df["class"]) #Group data by class label

plt.show()

Stacked histogram

堆叠直方图

import matplotlib.pyplot as plt
import pandas as pd

iris_df = pd.read_csv("iris.csv")
labels = iris_df["class"].unique() #get all class labels

#Extract attribute values with the specific label
def filterData(df, attribute, label):
    values = iris_df[iris_df["class"] == label][[attribute]].values #Convert to NumPu array
    return pd.DataFrame(data=values,  columns=[label])#Return as DataFrame with a single column, using class label column name


df = pd.concat([filterData(iris_df, "sepallength", label)
                for label in labels], axis="columns")   #Combine data of different class labels into a table

df.plot.hist(stacked=True, bins=5)

plt.show()

Stacked histogram using Seaborn

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

iris_df = pd.read_csv("iris.csv")

sns.histplot(iris_df, x="sepallength", hue="class", multiple="stack")

plt.show()

All histograms

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

iris_df = pd.read_csv("iris.csv")
labels = iris_df['class'].unique()
columns = [column
           for column in iris_df.columns
           if column not in ['id', 'class']]  #Get all attributes except id and class labels

_, axes = plt.subplots(1, len(columns)) #Prepare plot areas
for c in range(len(columns)):
    sns.histplot(iris_df, x=columns[c], hue="class",
                 multiple="stack", ax=axes[c])  #Plot each histogram at the correct area

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值