In [ ]:
%matplotlib inline
import pandas as pd
import seaborn as sns
import numpy as np

In [ ]:
df = pd.read_csv('data.csv')

In [ ]:
list(df.columns.values)

In [ ]:
# Data cleaning
df.loc[df.AnzahlSexualpartnerAllgemein > 10000, 'AnzahlSexualpartnerAllgemein'] = float('inf')
df.loc[df.AnzahlSexualpartnerGreifswald > 10000, 'AnzahlSexualpartnerGreifswald'] = float('inf')
df.loc[df.AnzahlStechmuecken > 10000, 'AnzahlStechmuecken'] = float('inf')
df.loc[df.Groesse < 20, 'Groesse'] = None
# sorted(df[['LaengeFreundschaft']].values)
df.loc[df.LaengeFreundschaft > 100, ['Alter', 'LaengeFreundschaft']] = None

In [ ]:
grouped = df.groupby('Geschlecht')
grouped['EigeneAttraktivitaet'].hist(alpha=0.4, position=0, bins=range(1, 11))

In [ ]:
df.loc[(df.Geschlecht == 'Weiblich') & (df.AnzahlStechmuecken < 100), 'AnzahlStechmuecken'].plot.hist()
df.loc[(df.Geschlecht == 'Männlich') & (df.AnzahlStechmuecken < 100), 'AnzahlStechmuecken'].plot.hist()

In [ ]:
df.loc[(df.Geschlecht == 'Weiblich') & (df.AnzahlStechmuecken < 100), 'AnzahlStechmuecken'].plot.hist(alpha=0.5)
df.loc[(df.Geschlecht == 'Männlich') & (df.AnzahlStechmuecken < 100), 'AnzahlStechmuecken'].plot.hist(alpha=0.5)

In [ ]:
df.loc[df.Geschlecht == 'Männlich', 'EigeneAttraktivitaet'].plot.hist(bins=range(1, 11),alpha=0.5)

In [ ]:
# df.loc['EigeneAttraktivitaet'].plot.hist()
df.loc[df.Geschlecht == 'Weiblich', 'EigeneAttraktivitaet'].plot.hist(bins=range(1, 11), alpha=0.5)

In [ ]:
categorial = ['Geschlecht',
              'Studienfach',
              'AG',
              'ZungeRollen',
              'BeziehungsstatusVorher',
              'BeziehungsstatusNachher',
              'Tinder',
              'GrundSpaetInsBett',
              'BesterAbendvortrag',
              'Transportmittel',
              'Gendern',
              'PlutoPlanet',
              'ArtikelButter',
              'ArtikelNutella',
              'NutellaMitButter',
              'SchoensterDialekt',
              'PfluegenOderNicht',
              'BestaussehenderMann',
              'BestaussehendeFrau',
              'WegZumStipendium',
              'Fu\xc3\x9fnoten',
              'BeziehungMitStifti',
              'InEinemWort']
numeric_cols = ['Alter',
 'AnzahlSommerakademien',
 'LaengeAnfahrt',
 'AnzahlSprachen',
 'AnzahlGeschwister',
 'AnzahlVornamen',
 'Groesse',
 'AnzahlStaatsbuergerschaften',
 'LaengeFreundschaft',
 'AnzahlPokemon',
 'MengeKaffee',
 'AnzahlSexualpartnerAllgemein',
 'AnzahlSexualpartnerGreifswald',
 'StundenSport',
 'AnzahlBuecher',
 'AnzahlFacebookfreunde',
 'DurchschnittAbi',
 'DurchschnittAktuell',
 'QuersummePIN',
 'MengeBargeld',
 'AnzahlZimmergenossen',
 'MengeSchlaf',
 'DauerVorbereitungZuhause',
 'DauerVorbereitungGreifswald',
 'GeldMensakarte',
 'AnzahlAbendvortraegeGeschwaenzt',
 'AnzahlFremdeBetten',
 'ZeitAufWasser',
 'AnzahlStechmuecken',
 'EigeneAttraktivitaet',]

print("Datenpunkte: %i" % len(df))
for val in numeric_cols:
    if val in ['AnzahlSexualpartnerAllgemein', 'AnzahlSexualpartnerGreifswald', 'AnzahlStechmuecken']:
        continue
    print("{0:>32}: {1:>06.2f} (Range: {2:>4.2f} - {3:>4.2f})\t Mean: {4:>5.2f}".format(
           val,
           float(df[[val]].median()),
           float(df[[val]].min()),
           float(df[[val]].max()),
           float(df[[val]].mean())))
    print("{0:>32}, Group: abs min (AG {1: .0f}) abs max (AG {2: .0f}), mean min (AG {3: .0f}), mean max (AG {4: .0f})".format(
          val,
          df.groupby('AG')[val].min().idxmin(),
          df.groupby('AG')[val].max().idxmax(),
          df.groupby('AG')[val].mean().idxmin(),
          df.groupby('AG')[val].mean().idxmax()))
    print("{0:>32}, Group: median min={1} (AG {2: .0f}), median max={3} (AG {4: .0f}), sum={5} (AG {6: .0f})".format(
          val,
          df.groupby('AG')[val].median().min(),
          df.groupby('AG')[val].median().idxmin(),
          df.groupby('AG')[val].median().max(),
          df.groupby('AG')[val].median().idxmax(),
          df.groupby('AG')[val].sum().max(),
          df.groupby('AG')[val].sum().idxmax()))
    val_min = int(min(df[val]))
    val_max = int(min(10000, max(df[val])))
    # df[[val]].plot.hist(bins=np.linspace(minimum, maximum, 10), alpha=0.5, normed=True)
    #df.loc[df.Geschlecht == 'Weiblich', val].plot.hist(bins=np.linspace(minimum, maximum, 10), alpha=0.5, normed=True)
    # df.loc[df.Geschlecht == 'Männlich', val].plot.hist(bins=np.linspace(minimum, maximum, 10), alpha=0.5, normed=True)
    
df.groupby('AG')['ZungeRollen'].describe()

In [ ]:
# TODO
df.groupby('AG')["StundenSport"].mean()

In [ ]:
df.groupby('Geschlecht').describe()

In [ ]:
df[df.AG == 5]

In [ ]:
df[(df.Geschlecht == "Weiblich") & (df.PlutoPlanet == 'Ist das nicht der Hund von Goofy?')]

In [ ]:
gb = df[(df.Geschlecht == "Weiblich")].groupby("PlutoPlanet")
gb.sum()

In [ ]:
gb = df.groupby("AG")
gb.sum()[[""]]
gb.sum()

In [ ]:
gb.groups

In [ ]: