Я ищу помощь в фильтрации различных фреймов данных для экспорта в рабочие таблицы. Вот примерный фрейм данных.
import pandas as pd
import numpy as np
np.random.seed(1111)
df = pd.DataFrame({
'Category':np.random.choice( ['Group A','Group B','Group C','Group D'], 10000),
'Sub-Category':np.random.choice( ['X','Y','Z'], 10000),
'Sub-Category-2':np.random.choice( ['G','F','I'], 10000),
'Product':np.random.choice( ['Product 1','Product 2','Product 3'], 10000),
'Units_Sold':np.random.randint(1,100, size=(10000)),
'Dollars_Sold':np.random.randint(100,1000, size=10000),
'Customer':np.random.choice(pd.util.testing.rands_array(10,25,dtype='str'),10000),
'Date':np.random.choice( pd.date_range('1/1/2016','12/31/2018',
freq='D'), 10000)})
Ниже приведены различные кадры данных, которые я хотел бы экспортировать в книги Excel:
df1 = df.groupby(['Category','Sub-Category-2','Product']).agg({'Units_Sold':'sum'})
df2 = df.groupby(['Category','Product',pd.Grouper(key='Date',freq='A-APR')]).agg({'Dollars_Sold':'sum'})
df3 = df.groupby(['Category','Product','Sub-Category']).agg({'Units_Sold':'sum','Dollars_Sold':'sum'})
Для каждой категории я хотел бы создать отдельную книгу Excel с отфильтрованным каждым кадром данных, чтобы показать только эту конкретную категорию. Например, рабочая книга «Группа A» будет иметь в качестве отдельных рабочих листов df1, df2 и & df3, причем в кадре данных отображаются только те значения, где «Category» = «Группа A». Рабочая книга «Группа B» будет иметь ту же информацию, только что отфильтрованная, где «Категория» = «Группа B».
Я знаю, как сделать это вручную с помощью .loc, но это кажется очень медленным. У меня вопрос, как мне сделать это питонским способом? Данные в примере не велики, но мои реальные данные содержат более 30 категорий в категории. Есть ли способ создать функцию для надлежащего нарезки и удаления данных после фильтрации?