如何为DataFrame的单行全列数据绘制displot分布统计图
单行DataFrame数值分布可视化实现方案
前置依赖
需要提前安装pandas、matplotlib两个基础库,可额外安装seaborn简化统计图表绘制。
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
数据预处理
你当前的DataFrame只有1行,首先需要将其转换为一维序列才能直接用于绘图:
# 你的示例DataFrame df = pd.DataFrame([[83.0,147.0,195.0,170.0,216.0,237.0,334.0,386.0,253.0,414.0]], columns=['O13','O117','O5','O31','O49','O58','O70','O103','O10','O69']) # 取第一行得到「列名为索引、数值为值」的一维Series data_series = df.iloc[0]
可选可视化方案
你可以根据需求选择对应的图表类型:
方案1:直方图+核密度估计(推荐用于数值分布统计)
可以直观看到数值的频次分布、集中区间、偏态特征:
plt.figure(figsize=(10,6)) # kde=True表示同时绘制核密度曲线,bins可根据数值数量调整 sns.histplot(data=data_series, kde=True, bins=5, color='skyblue') plt.title('所有列数值分布') plt.xlabel('数值') plt.ylabel('频次') plt.grid(axis='y', alpha=0.3) plt.show()
方案2:排序条形图(同时对应列名和具体数值)
如果需要同时查看每个列对应的具体数值和大小排序,可选择该方案:
plt.figure(figsize=(12,6)) # 按数值排序后绘制条形图 data_series.sort_values().plot(kind='bar', color='lightgreen') plt.title('各列数值分布对比') plt.xlabel('列名') plt.ylabel('数值') plt.xticks(rotation=45) plt.grid(axis='y', alpha=0.3) # 可选:在柱子上方添加数值标注 for i, v in enumerate(data_series.sort_values()): plt.text(i, v+5, str(v), ha='center') plt.show()
方案3:箱线图(快速查看四分位、异常值特征)
适合快速判断分布的离散程度、是否存在异常值:
plt.figure(figsize=(8,6)) sns.boxplot(data=data_series, color='orange') plt.title('数值分布箱线图') plt.ylabel('数值') plt.show()
内容的提问来源于stack exchange,提问作者Ap1712
相关产品推荐
相关产品推荐

