如何绘制饼图?

how to plot a pie chart?

我有这样的数据:

Machine_id Cycling Idle
81091001 41000000000 19000000000
81091001 40000000000 19000000000
81091001 41000000000 19000000000
81091001 41000000000 20000000000
81091001 41000000000 19000000000

绘制饼图的代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(palette='Paired')

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

df = df.set_index('Machine_id')

for ind in df.index:
     fig, ax = plt.subplots(1,1)
     fig.set_size_inches(5,5)
     df.iloc[ind].plot(kind='pie', ax=ax, autopct='%1.1f%%')
     ax.set_ylabel('')
     ax.set_xlabel('')

我在这里遇到错误,例如:

IndexError: single positional indexer is out-of-bounds

那么 Cycling v/s Idle 在 pandas 中每个 Machine_id 明智的饼图是如何形成的?

您的问题已解决:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set(palette='Paired')

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

#df = df.set_index('Machine_id')  comment this

for ind in df.index:
     fig, ax = plt.subplots(1,1)
     fig.set_size_inches(5,5)
     df.iloc[ind].plot(kind='pie', ax=ax, autopct='%1.1f%%')
     ax.set_ylabel('')
     ax.set_xlabel('')
     fig.show()   #plot/show final results

另一种方式,考虑每行具有循环和空闲时间的单独图表。每条线的饼图。 (也许饼图不是说明这一点的最佳方式,但无论如何)

参考。 https://matplotlib.org/api/pyplot_api.html

import csv as csv
import matplotlib.pyplot as plt

colors = ['r', 'g']

with open('sample1.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')

    i = 0

    for row in readCSV:
        if i == 0:
            activities = [row[1], row[2]]
            title = row[0]
        else:
            slices = [row[1], row[2]]
            plt.title("Machine ID: " + row[0])  #title is here UPDATED
            plt.pie(slices, labels=activities, colors=colors, startangle=90, autopct='%.1f%%')
            plt.show()

        i += 1