如何绘制pandas中列值的分布
您可以使用以下方法来绘制 pandas DataFrame 中列值的分布:
方法1:绘制列中值的分布
df[' my_column ']. plot (kind=' kde ')
方法 2:绘制一列中值的分布,并按另一列分组
df. groupby (' group_column ')[' values_column ']. plot (kind=' kde ')
以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'], ' points ': [3, 3, 4, 5, 4, 7, 7, 7, 10, 11, 8, 7, 8, 9, 12, 12, 12, 14, 15, 17]}) #view DataFrame print (df) team points 0 to 3 1 to 3 2 to 4 3 to 5 4 to 4 5 TO 7 6 to 7 7 to 7 8 to 10 9 to 11 10 B 8 11 B 7 12 B 8 13 B 9 14 B 12 15 B 12 16 B 12 17 B 14 18 B 15 19 B 17
示例 1:绘制列中值的分布图
以下代码显示了如何绘制点列中值的分布:
#plot distribution of values in points column df[' points ']. plot (kind=' kde ')
请注意, kind=’kde’告诉 pandas 使用核密度估计,它会生成一条平滑的曲线,总结变量值的分布。
如果您想创建直方图,可以指定kind=’hist’ ,如下所示:
#plot distribution of values in points column using histogram df[' points ']. plot (kind=' hist ', edgecolor=' black ')
此方法使用条形来表示点列中值的频率,而不是总结分布形状的平滑线。
示例 2:绘制一列中值的分布,并按另一列分组
以下代码显示了如何绘制点列中值的分布(按团队列分组):
import matplotlib.pyplot as plt #plot distribution of points by team df. groupby (' team ')[' points ']. plot (kind=' kde ') #add legend plt. legend ([' A ',' B '], title=' Team ') #add x-axis label plt. xlabel (' Points ')
蓝线表示A队球员的得分分布,橙线表示B队球员的得分分布。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
如何在 Pandas 中为绘图添加标题
如何调整熊猫图的图形大小
如何在子图中绘制多个 Pandas DataFrame
如何在 Pandas 中创建和自定义图例