如何从pandas DataSeries中提取独特的排列?

wci*_*iel 5 python pandas jupyter data-science

使用Pandas DataSeries在Jupyter中工作我有一个包含如下行的数据集:

color: white
engineType: diesel
make: Ford
manufacturingYear: 2004
accidentCount: 123
Run Code Online (Sandbox Code Playgroud)

我需要做的是绘制颜色/ engineType/make的所有排列的制造年份(x轴)的事故计数图表(y轴).任何想法如何处理这个?

为了加快速度,我有了这个初始设置:

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import random


colors = ['white', 'black','silver']
engineTypes = ['diesel', 'petrol']
makes = ['ford', 'mazda', 'subaru']
years = range(2000,2005)

rowCount = 100

def randomEl(data):
    rand_items = [data[random.randrange(len(data))] for item in range(rowCount)]
    return rand_items


df = DataFrame({
    'color': Series(randomEl(colors)),
    'engineType': Series(randomEl(engineTypes)),
    'make': Series(randomEl(makes)),
    'year': Series(randomEl(years)),
    'accidents': Series([int(1000*random.random()) for i in range(rowCount)])
})
Run Code Online (Sandbox Code Playgroud)

ASG*_*SGM 6

你可以通过独特的事故数量color,engineType以及make使用组合groupby():

accident_counts = df.groupby(['color', 'engineType', 'make'])['accidents'].sum()
Run Code Online (Sandbox Code Playgroud)

Matplotlib是绘制结果的一种方式:

import matplotlib.pyplot as plt
accident_counts.plot(kind='bar')
plt.show()
Run Code Online (Sandbox Code Playgroud)