Testing Groupby and Aggregate operations for exploratory data analysis with pandas. Please feel free to download and edit it as you like.
Summary:
Import pandas
import pandas as pd
Jupyter notebook center output images:
from IPython.core.display import HTML
HTML("""
<style>
.output_png {
display: table-cell;
text-align: center;
vertical-align: middle;
}
</style>
""")
data = {'Age':[21,26,82,15,28],
'weight':[120,148,139,156,129],
'Gender':['male','male','female','male','female'],
'Country':['France','USA','USA','Germany','USA']}
df = pd.DataFrame(data=data)
df.groupby(by="Gender").mean()
df.groupby(["Gender",'Country']).mean()
df.groupby(["Gender",'Country']).Age.mean()
df.groupby(["Gender",'Country'])['Age'].mean()
df.groupby(["Country",'Gender']).mean()
df.groupby(["Country",'Gender']).mean().sort_values(by='Age')
df.groupby(by="Gender").describe()
df.groupby(by="Gender").agg('mean')
df.groupby(by="Gender").agg(['mean','count','sum','min','max'])
Let's test groupby and agg operations on the database titanic.csv
df = pd.read_csv('https://gist.githubusercontent.com/michhar/2dfd2de0d4f8727f873422c5d959fff5/raw/fa71405126017e6a37bea592440b4bee94bf7b9e/titanic.csv')
df.head()
df.columns
df['Age'].plot(kind="hist")
df['Age'].mean()
df['Sex'].value_counts(dropna=False)
df['Age'][ df['Sex'] == "male" ].hist()
df['Age'][ df['Sex'] == "male" ].mean()
df['Age'][ df['Sex'] == "female" ].hist()
df['Age'][ df['Sex'] == "female" ].mean()
df.groupby(['Survived','Sex'])[['Age','Fare']].mean()
df.groupby(['Survived','Sex']).Age.mean()
%%time
df[['Pclass','Survived']].groupby(['Pclass']).mean()
Same but slower since the mean is calculated for every numeric columns !!
%%time
df.groupby(['Pclass'])[['Survived']].mean()
df.groupby(['Survived','Sex']).Age.describe()
df.groupby(['Survived','Sex'])[['Age','Fare']].agg(['mean','max','min'])
df.groupby(['Survived']).Age.mean()
df.groupby(['Survived']).Fare.mean()