Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用来自同一数据帧的数据剪切创建seaborn的多个箱线图_Python_Python 3.x_Seaborn_Data Science - Fatal编程技术网

Python 如何使用来自同一数据帧的数据剪切创建seaborn的多个箱线图

Python 如何使用来自同一数据帧的数据剪切创建seaborn的多个箱线图,python,python-3.x,seaborn,data-science,Python,Python 3.x,Seaborn,Data Science,我目前有一个数据框,其中包含不同的存储和与每个存储关联的分数。每一行表示特定时间段的一组分数,因此每个存储在数据集中表示多次。我想建立一系列的箱线图,每个商店一个,并显示每个分数的分布,针对特定的分数 到目前为止,我确信唯一有效的方法是创建新的过滤数据帧,然后分别对每个数据帧进行箱线图。然而,我觉得有一个更优雅的解决方案,可能涉及到for循环,我不必手动构建每个单独的数据帧 df=pd.read\u csv('Store\u scores.csv')) df_storeA=df.loc['Sto

我目前有一个数据框,其中包含不同的存储和与每个存储关联的分数。每一行表示特定时间段的一组分数,因此每个存储在数据集中表示多次。我想建立一系列的箱线图,每个商店一个,并显示每个分数的分布,针对特定的分数

到目前为止,我确信唯一有效的方法是创建新的过滤数据帧,然后分别对每个数据帧进行箱线图。然而,我觉得有一个更优雅的解决方案,可能涉及到for循环,我不必手动构建每个单独的数据帧

df=pd.read\u csv('Store\u scores.csv'))
df_storeA=df.loc['Store_A',:]
df_storeB=df.loc['Store_B',:]
df_storeC=df.loc['Store_C',:]
sns.boxplot(数据=df_storeA,y=value,x=categories)
sns.boxplot(数据=df_storeB,y=value,x=categories)
sns.boxplot(数据=df_storeC,y=value,x=categories)

虽然这在技术上是可行的,但数据集中有几个存储区,所以我希望少一点手工操作,多一点健壮。

假设您的值和类别不变,您可以使用您提到的for循环

df = pd.read_csv('Store_scores.csv')

#removes duplicates
stores = set(df.index)

#iterate over the stores and plot
for store in stores:    
    sns.boxplot(data=df.loc[store,:], y=values, x=categories)



由于您的数据显示了存储区上的索引,因此考虑在其中创建一个列,并将其作为一个调用中的色度包含在<代码> Seabn.Box Prime/COD>(假设类别是可管理的、少量的)中:


要使用随机种子数据演示:

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(72319)
random_df = (pd.DataFrame({'categories': np.random.choice(['julia', 'python', 'r'], 500),
                          'values': np.random.uniform(50, 100, 500),                         
                         }, index = np.random.choice(['Store_A', 'Store_B', 'Store_C'], 500))
               .sort_index())

random_df = random_df.reset_index()

fig, ax = plt.subplots(figsize=(13,5))
sns.boxplot(data=random_df, x="categories", y="values", hue="index", ax=ax)

plt.show()
plt.clf()
plt.close()

请提供数据帧的表示形式好吗?或者,更好的是,给我们几行代码,展示如何自己制作(如果只是使用虚拟数据)?
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(72319)
random_df = (pd.DataFrame({'categories': np.random.choice(['julia', 'python', 'r'], 500),
                          'values': np.random.uniform(50, 100, 500),                         
                         }, index = np.random.choice(['Store_A', 'Store_B', 'Store_C'], 500))
               .sort_index())

random_df = random_df.reset_index()

fig, ax = plt.subplots(figsize=(13,5))
sns.boxplot(data=random_df, x="categories", y="values", hue="index", ax=ax)

plt.show()
plt.clf()
plt.close()