如何使用多个相似数据集中的同一列绘制计数图?
How do I plot countplot using the same column from multiple similar datasets?
我正在尝试使用从单个数据集("heart.csv" ).
我正在使用下面的代码计数图
df = pd.read_csv("heart.csv")
df['Sex'].value_counts()
sns.countplot(data=df, x='Sex')
但是,我需要绘制来自不同数据集或来自单个数据集的不同部分的计数图。
我正在使用下面的代码片段对数据集进行切片。
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
我的问题是,如何绘制来自不同数据集或单个数据集不同部分的计数子图?
您应该将生成的数据帧放在一个列表中,并使用 for
循环逐一迭代它们。将相关代码放在一个函数中也可以帮助你不重复自己。
def plot_counts(dataframe):
dataframe['Sex'].value_counts()
sns.countplot(data=dataframe, x='Sex')
df = pd.read_csv("heart.csv")
plot_counts(df)
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
df_list = [Clv, Hng, Swtz, Lb, Stl]
for dataframe in df_list:
plot_counts(dataframe)
如果只需要制作一次'Sex'
列,可以省去函数定义,直接调用sns.countplot()
即可:
df = pd.read_csv("heart.csv")
df['Sex'].value_counts()
sns.countplot(data=df, x='Sex')
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
df_list = [Clv, Hng, Swtz, Lb, Stl]
for dataframe in df_list:
sns.countplot(data=dataframe, x='Sex')
您可以创建一个额外的列,例如'Category'
并根据行索引分配一个值。然后您可以使用该新列作为 seaborn 中的差异化因素。例如。作为 hue='Category'
或 x='Category'
:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(2021)
df = pd.DataFrame({'Sex': np.random.choice(['F', 'M'], 1000),
'Other_info': np.random.rand(1000)})
df['Category'] = ''
Clv = df.loc[0:302, 'Category'] = 'Clv'
Hng = df.loc[303:(303 + 293), 'Category'] = 'Hng'
Swtz = df.loc[(303 + 294):(303 + 294 + 122), 'Category'] = 'Swtz'
Lb = df.loc[(303 + 294 + 123):(303 + 294 + 123 + 199), 'Category'] = 'Lb'
Stl = df.loc[(303 + 294 + 123 + 200):, 'Category'] = 'Stl'
sns.set()
ax = sns.countplot(data=df, x='Category', hue='Sex', palette='mako')
# an alternative could be x='Sex', hue='Category'
plt.show()
A sns.catplot()
使用新列作为 col=
可能看起来像:
sns.set()
g = sns.catplot(data=df, x='Sex', col='Category', sharey=True, height=4, aspect=0.5, palette='rocket', kind='count')
g.set(xlabel='')
plt.tight_layout()
plt.show()
我正在尝试使用从单个数据集("heart.csv" ).
我正在使用下面的代码计数图
df = pd.read_csv("heart.csv")
df['Sex'].value_counts()
sns.countplot(data=df, x='Sex')
但是,我需要绘制来自不同数据集或来自单个数据集的不同部分的计数图。 我正在使用下面的代码片段对数据集进行切片。
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
我的问题是,如何绘制来自不同数据集或单个数据集不同部分的计数子图?
您应该将生成的数据帧放在一个列表中,并使用 for
循环逐一迭代它们。将相关代码放在一个函数中也可以帮助你不重复自己。
def plot_counts(dataframe):
dataframe['Sex'].value_counts()
sns.countplot(data=dataframe, x='Sex')
df = pd.read_csv("heart.csv")
plot_counts(df)
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
df_list = [Clv, Hng, Swtz, Lb, Stl]
for dataframe in df_list:
plot_counts(dataframe)
如果只需要制作一次'Sex'
列,可以省去函数定义,直接调用sns.countplot()
即可:
df = pd.read_csv("heart.csv")
df['Sex'].value_counts()
sns.countplot(data=df, x='Sex')
Clv = df.loc[0:302, :]
Hng = df.loc[303:(303+293), :]
Swtz = df.loc[(303+294):(303+294+122), :]
Lb = df.loc[(303+294+123):(303+294+123+199), :]
Stl = df.loc[(303+294+123+200):, :]
df_list = [Clv, Hng, Swtz, Lb, Stl]
for dataframe in df_list:
sns.countplot(data=dataframe, x='Sex')
您可以创建一个额外的列,例如'Category'
并根据行索引分配一个值。然后您可以使用该新列作为 seaborn 中的差异化因素。例如。作为 hue='Category'
或 x='Category'
:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(2021)
df = pd.DataFrame({'Sex': np.random.choice(['F', 'M'], 1000),
'Other_info': np.random.rand(1000)})
df['Category'] = ''
Clv = df.loc[0:302, 'Category'] = 'Clv'
Hng = df.loc[303:(303 + 293), 'Category'] = 'Hng'
Swtz = df.loc[(303 + 294):(303 + 294 + 122), 'Category'] = 'Swtz'
Lb = df.loc[(303 + 294 + 123):(303 + 294 + 123 + 199), 'Category'] = 'Lb'
Stl = df.loc[(303 + 294 + 123 + 200):, 'Category'] = 'Stl'
sns.set()
ax = sns.countplot(data=df, x='Category', hue='Sex', palette='mako')
# an alternative could be x='Sex', hue='Category'
plt.show()
A sns.catplot()
使用新列作为 col=
可能看起来像:
sns.set()
g = sns.catplot(data=df, x='Sex', col='Category', sharey=True, height=4, aspect=0.5, palette='rocket', kind='count')
g.set(xlabel='')
plt.tight_layout()
plt.show()