Есть ли более простой способ создать файл .csv? - PullRequest
0 голосов
/ 01 августа 2020

Я делаю проект, в котором хочу показать, сколько раз упоминалась определенная порода собак. Есть три породы собак (голден-ретривер, лабрадор-ретривер, чихуахуа) и у меня уже есть все номера (266, 265, 179 соответственно). Я хочу использовать seaborn (и встроенный matplotlib) для создания гистограммы. Пока что единственное решение, которое я нашел, - это поместить «golden_retriever» в файл .csv 266 раз (и «labrador_retriever» 265 раз, et c).

Существует более элегантное решение, но Я не знаю. Чтобы прояснить ситуацию, я хочу, чтобы у каждой породы собак было пространство на оси 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 столбца с golden_retriever с количеством 4 и labrador_retriever, а также чихуахуа с количеством 2.

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Если вы хотите использовать для этой цели функцию seaborn.countplot, вы можете использовать массив вместо pandas.DataFrame в качестве входных данных:

import seaborn as sns
dogs = ['golden_retriever'] * 266 + ['labrador_retriever'] * 265 + ['chihuahua'] * 179
sns.countplot(dogs)
0 голосов
/ 01 августа 2020

Я думаю, что один из способов избежать множественных файлов - это сначала выполнить подсчет значений в столбце фрейма данных. Это действие даст вам каждую породу собак и ее частоту (количество раз, когда она появляется в столбце), после чего вы можете просто построить график морских волн. Таким образом, вы можете просто получить доступ к breed_df, чтобы увидеть, что вы рисуете, и фактически сохранить это в файл CSV. Результат: Barplot с породой против частоты встречаемости породы и 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())
...