【问题标题】:Is there an easier way to make a .csv file?有没有更简单的方法来制作 .csv 文件?
【发布时间】:2020-08-01 16:39:31
【问题描述】:

我正在做一个项目,我想展示某个犬种被提及的次数。共有三种犬种(golden_retriever、labrador_retriever、chihuahua),我已经有了所有的数字(分别为 266、265、179)。我想使用 seaborn(和 matplotlib 内联)来创建条形图。到目前为止,我发现的唯一解决方案是将“golden_retriever”放入 .csv 文件 266 次(以及“labrador_retriever”265 次,等等)。

有一个更优雅的解决方案,但我不知道。为了清楚起见,我希望每个狗品种在 x 轴上有一个空间,每个条形将分别有 266、265、179。 我到目前为止的代码:

df = pd.read_csv(‘top_three_dogs.csv’)
sns.countplot(data = df, x = ‘breed_name’)

.csv 文件看起来像这样,当有更好的方法时,我只是不想有 710 行:

breed_name
golden_retriever
golden_retriever
golden_retriever
golden_retriever
labrador_retriever
labrador_retriever
chihuahua
chihuahua

来自 sns.countplot 代码的图有 3 个条形图,其中 gold_retriever 的计数为 4,labrador_retriever 和吉娃娃的计数为 2。

【问题讨论】:

  • 将狗列出一次并有一列显示它出现的次数会容易得多。
  • 我确实尝试过,这实际上是我尝试解决它的第一个想法。我只是无法让它工作。

标签: python-3.x pandas csv matplotlib seaborn


【解决方案1】:

如果您想为此使用seaborn.countplot 函数,您可以使用数组而不是pandas.DataFrame 作为输入数据:

import seaborn as sns
dogs = ['golden_retriever'] * 266 + ['labrador_retriever'] * 265 + ['chihuahua'] * 179
sns.countplot(dogs)

【讨论】:

    【解决方案2】:

    我认为避免多个文件的一种方法是首先对数据框的列执行值计数。此操作将为您提供每种狗的品种及其频率(它出现在列上的次数),然后您可以简单地绘制 seaborn 图。通过这种方式,您可以简单地访问breed_df 以查看您正在绘制的内容,并将其实际保存到 CSV 文件中。
    结果:带有品种与品种频率的条形图和带有信息的breeds_frecuency.csv

    df = pd.read_csv(‘top_three_dogs.csv’)
    breed_df = df.breed.value_counts().sort_index().to_csv("breeds_frequency.csv")
    seaborn.barplot(x=df.breed.value_counts().index,y=df.breed.value_counts())
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      相关资源
      最近更新 更多