Создание диаграммы P ie с Python с уже существующими данными из Excel без перезаписи файла Excel - PullRequest
1 голос
/ 27 апреля 2020

Я новичок в Pandas и фреймах данных и во всем этом, и я пытался сгенерировать некоторые диаграммы (точнее p ie) с данными, которые уже находятся в файле Excel.

У меня есть один рабочий лист, который содержит большой кусок данных. Из этой таблицы, используя openpyxl, я создаю новую таблицу, в которую я добавляю некоторые формулы, чтобы возвращать некоторые значения, похожие на это:

https://i.stack.imgur.com/ojM2R.png

Содержимое здесь как хорошо:

+----------------------------------------------------+
| User  |  Total  | Open  | Closed | Fixed |Rejected |
+----------------------------------------------------+
| James    23        7       16        7       12    |
| Michael  2         1       1         1       0     |
| Andreas  11        7       4         3       3     |
| Betty    6         2       4         1       3     |
+----------------------------------------------------+

Теперь я хочу создать диаграмму ap ie с пользователями и каждым из других столбцов (один график p ie пользователя X Всего билетов, один график p ie с пользовательскими открытыми билетами X и т. д.)

Я пробовал xlsxwritter, но он перезаписывает весь мой документ и ему не удалось заставить его работать. Все примеры с openpyxl, которые не перезаписывают мой документ, содержат случайно сгенерированные данные, а не существующие данные из и файл Excel, и я не знаю, как реализовать эти методы с тем, что я хочу сделать.

Не могли бы вы помочь мне понять, что я должен делать и, возможно, как?

Мне также было интересно, есть ли способ, как формула, генерировать график ap ie. Что-то вроде

(=PIECHART(Sheet!B1:B5,Sheet!C1:C5)).

Спасибо большое, ура, Алин

1 Ответ

0 голосов
/ 27 апреля 2020

IIU C,

df.set_index('User').T.plot.pie(subplots=True, figsize=(15,10), layout=(2,2))
plt.tight_layout()

Выход:

enter image description here

Обновление:

df.set_index('User').plot.pie(subplots=True, figsize=(15,10), layout=(2,3))
plt.tight_layout()

enter image description here

...