每个列数据框的分布概率,在一个图中
Posted
技术标签:
【中文标题】每个列数据框的分布概率,在一个图中【英文标题】:Distribution probabilities for each column data frame, in one plot 【发布时间】:2018-11-29 19:38:06 【问题描述】:我正在通过 seaborn 库 sns.distplot() 中的 distplot 为我的数据帧的每一列创建概率分布。对于一个情节我做
x = df['A']
sns.distplot(x);
我正在尝试使用 FacetGrid 和 Map 一次为每列绘制所有图 这样。但根本不起作用。
g = sns.FacetGrid(df, col = 'A','B','C','D','E')
g.map(sns.distplot())
【问题讨论】:
【参考方案1】:我认为您需要使用 melt
将您的数据框重塑为长格式,请参阅此 MVCE:
df = pd.DataFrame(np.random.random((100,5)), columns = list('ABCDE'))
dfm = df.melt(var_name='columns')
g = sns.FacetGrid(dfm, col='columns')
g = (g.map(sns.distplot, 'value'))
输出:
【讨论】:
非常感谢。我用融化选项得到了惊人的情节。我确实需要通过创建一列 = 先前列的列表来重塑我的数据框。 @Annalix 我很高兴这对你有用。编码愉快!【参考方案2】:您在两个层面上都犯了这个错误。
Python 语法。FacetGrid(df, col = 'A','B','C','D','E')
无效,因为 col
被设置为 A
并且剩余的字符被解释为进一步的参数。但由于它们没有命名,这是无效的 python 语法。
Seaborn 概念。
Seaborn 需要一个列名作为 col
或 row
参数的输入。这意味着数据框需要采用具有一列的格式,该列确定相应数据所属的列或行。
您没有调用 map 使用的函数。这个想法当然是map
自己调用它。
解决方案:
循环列:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(np.random.randn(14,5), columns=list("ABCDE"))
fig, axes = plt.subplots(ncols=5)
for ax, col in zip(axes, df.columns):
sns.distplot(df[col], ax=ax)
plt.show()
融化数据框
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(np.random.randn(14,5), columns=list("ABCDE"))
g = sns.FacetGrid(df.melt(), col="variable")
g.map(sns.distplot, "value")
plt.show()
【讨论】:
【参考方案3】:您可以使用以下内容:
# listing dataframes types
list(set(df.dtypes.tolist()))
# include only float and integer
df_num = df.select_dtypes(include = ['float64', 'int64'])
# display what has been selected
df_num.head()
# plot
df_num.hist(figsize=(16, 20), bins=50, xlabelsize=8, ylabelsize=8);
【讨论】:
【参考方案4】:我认为最简单的方法是循环列并创建一个图。
import numpy as np
improt pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.random((100,5)), columns = list('ABCDE'))
for col in df.columns:
hist = df[col].hist(bins=10)
print("Plotting for column ".format(col))
plt.show()
【讨论】:
以上是关于每个列数据框的分布概率,在一个图中的主要内容,如果未能解决你的问题,请参考以下文章