Столбчатая диаграмма больших данных в python - PullRequest
1 голос
/ 12 апреля 2020

Я бы хотел построить линейчатую диаграмму из CSV-файла в python. У меня есть три столбца данных

year word frequency
2018 xyz 12
2017 gfh 14
2018 sdd 10
2015 fdh 1
2014 sss 3
2014 gfh 12
2013 gfh 2
2012 gfh 4
2011 wer 5
2010 krj 4
2009 krj 4
2019 bfg 4
... 300+ rows of data. 

Мне нужно go просмотреть все данные и построить график в виде столбчатой ​​диаграммы с разбивкой по годам, поэтому ось x - это слово, а ось y - это частота, Цвет легенды должен показывать год. Я хочу видеть, как эволюция каждого слова происходила год от года. Некоторые технологические слова многократно используются в каждом году, и, следовательно, гистограмма стека должна добавлять значения сверху и графику, например, слово gfh сначала отображает 14 для 2017 года, а затем в 2014 году я хочу, чтобы слово gfh отображало (в другом цвете) для значения 12 поверх gfh 2017 года. Как мне это сделать? До сих пор я назвал CSV-файл в моем коде. Но я не понимаю, как это может go пройти по всем строкам и правильно сложить слова (как некоторые слова повторяются на протяжении всех лет). Любая помощь высоко ценится. Кроме того, в CSV годы расположены в случайном порядке, но я отсортировал их по годам, чтобы было проще. Я только учусь python и пытаюсь понять эту рутинную графику, так как у меня 40 лет данных и ~ 20 слов. Так что я подумал, что составная линейка - лучший способ их представить. Любой другой метод визуализации также приветствуется.

1 Ответ

1 голос
/ 12 апреля 2020

Это можно сделать, используя pandas:

import pandas as pd

df = pd.read_csv("file.csv")

# Aggregate data
df = df.groupby(["word", "year"], as_index=False).agg({"frequency": "sum"})
# Create list to sort by
sorter = (
    df.groupby(["word"], as_index=False)
    .agg({"frequency": "sum"})
    .sort_values("frequency")["word"]
    .values
)

# Pivot, reindex, and plot
df = df.pivot(index="word", columns="year", values="frequency")
df = df.reindex(sorter)
df.plot.bar(stacked=True)

Какие выходы:
Stacked bar chart

...