Pandas Python, I’m having trouble figuring out which store sold the most in the last month

Asked

Viewed 173 times

3

I have problem to know how I do to get the last month that in the case and the month 2018/02 to can strip the average of who sold the most in this month.

import pandas as pd
% matplotlib inline

df = pd.read_csv('store_data.csv')
df.tail()

    week    storeA  storeB  storeC  storeD  storeE
195 2018-01-28  282 6351    7759    5558    1028
196 2018-02-04  4853    6503    4187    5956    1458
197 2018-02-11  9202    3677    4540    6186    243
198 2018-02-18  3512    7511    4151    5596    3501
199 2018-02-25  7560    6904    3569    5045    2585

df['week'] = pd.to_datetime(df['week'])
df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 6 columns):
week      200 non-null datetime64[ns]
storeA    200 non-null int64
storeB    200 non-null int64
storeC    200 non-null int64
storeD    200 non-null int64
storeE    200 non-null int64
dtypes: datetime64[ns](1), int64(5)
memory usage: 9.5 KB

1 answer

1

Good morning, all right?

I did as follows, I collected only the values you showed, being 4 dates of February and 1 January.

Dataframe

Then, I make the comparison as follows in date with type "datetime64[ns]" which is your case.

filtro = ((df['week'] > 'data_inicio') &
     (df['week'] < 'data_fim'))

In the dataframe above to select only February would be:

filtro = ((df['week'] > '2018-01-30') &
     (df['week'] < '2018-03-01'))

And then, I create a new dataframe with this filter:

novodf = df.loc[filtro]

Where visualizing, we realized that he only brought the dates of month 2:

Dataframe filtrado

To remove the average in the simplest way, I apply a pandas function in the columns of the new dataframe:

novodf.mean()

Resulting:

Media final

There are more beautiful ways to present this data, but I think this already gives you a light on how to apply date filter on pandas.

Hug.

Claudio

Browser other questions tagged

You are not signed in. Login or sign up in order to post.