根据列条件绘制饼图

时间:2020-07-31 15:17:19

标签: python dataframe matplotlib

我正在尝试从数据框中生成一个饼图。我的想法是,我有两列来指示数据是否有效。我想生成一个饼图,其中包含四个类别,分别是有效点(正确,正确),另外三个类别显示的是无效数据,指示数据是通过Validity1,Validity2还是二者均无效。

所以,我有以下数据集:

                TimeStamp  Avg. Values  ... Validity1 Validity2
0     2015-02-14 20:30:00      5.1736  ...     False   True
1     2015-02-14 20:40:00      16.6266  ...    True   True
2     2015-02-14 20:50:00      12.7667  ...    True   True
3     2015-02-14 21:00:00      11.6077  ...    False   True
4     2015-02-14 21:10:00       19.6851  ...   True   True
                  ...          ...  ...         ...    ...
1000 2015-06-12 23:30:00       1.699  ...      True  False
1001 2015-06-12 23:40:00       2.2468  ...     False  False
1002 2015-06-12 23:50:00       3.1147  ...     False  False
1003 2015-06-13 00:00:00       6.141  ...      True  False
1004 2015-06-13 00:10:00       3.792  ...      True  False

因此,我的想法之一是首先将数据划分为以下内容:

data_valid = data.loc[(data.SaDataValid == True) & (data.DataOK == True)]
data_invalid_both = data.loc[(data.Validity1 == False) & (data.Validity2== False)]
data_invalid_1 = data.loc[(data.Validity1 == True) & (data.Validity2 == False)]
data_invalid_2 = data.loc[(data.Validity1 == False) & (data.Validity2 == True)]

我的问题是,如何从这点开始绘制具有这4个类别的饼图,其中包括将Validity1和Validity 2的数据分为其他3个类别的条件。

1 个答案:

答案 0 :(得分:0)

您可以尝试:

df.groupby(['Validity1','Validity2']).size().plot.pie()

测试数据:

np.random.seed(1)
df = pd.DataFrame(np.random.choice([True, False], size=(100,2), p=[0.7,0.3]),
                  columns = ['Validity1','Validity2'])

输出:

enter image description here