import pandas as pd
import numpy as np
test = pd.util.testing.makeDataFrame()
test.head()
# mit fehlenden Werten
test_mis = pd.util.testing.makeMissingDataframe()
test_mis.head()
# mit Datetime Index
test_dat = pd.util.testing.makeTimeDataFrame()
test_dat.head()
# mit verschiedenen Datentypen
derp = pd.util.testing.makeMixedDataFrame()
derp
# Index resetten
# df = df.reset_index(drop=True)
# Multiindex setzen
test = test.set_index(['A', 'B'])
test.head()
derp.sort_values('A', ascending=False)
# derp.sort_index()
raw_data = {'town': ['Hamburg', 'Heidelberg', 'Freiburg', 'Tübingen', 'Berlin', 'Hamburg'],
'shape': ['oblong', 'round', 'diamond', 'sphere', 'dog', 'cat'],
'duration': [420, 472, 360, 204, 713, 14],
'color': ['blue and green', 'red', 'white', 'yellow', 'fuchsia', 'pink'],
'date': ['2013-08-11', '2019-08-12', '2019-08-13', '2019-08-14', '2019-08-15', '2019-07-21']}
df = pd.DataFrame(raw_data, columns = ['town', 'date', 'shape', 'color', 'duration'])
df
kuchen = ['Linzer Torte', 'Apfelkuchen', 'Frankfurter Kranz', 'Zitronenrolle']
pralinen= ['Schoko', 'Haselnuss', 'Marzipan', 'na']
data = pd.DataFrame({'Kuchen': kuchen, 'Pralinen': pralinen})
data
rand_df_1 = pd.DataFrame(np.random.rand(6,8))
rand_df_1.head()
rand_df = pd.DataFrame(np.random.rand(6,8), columns=list('abcdefgh'))
rand_df
df
# pd.read_csv('df', names = Liste, header=0)
rand_df = rand_df.rename({'a':'a alpha',
'b':'b beta'}, axis=1)
rand_df
rand_df.columns = rand_df.columns.str.replace(' ', '_')
rand_df
rand_df_ = rand_df.add_prefix('X_')
rand_df_ = rand_df.add_suffix('_Y')
rand_df_
# df.rename(str.upper, axis=1)
# df.rename(str.lower, axis=1)
[name.strip().replace('.', '') for name in df.columns]
rand_df_1.columns = ['eins', 'zwei', 'drei', 'vier', 'fünf', 'sechs', 'sieben', 'acht']
rand_df_1
df = df.assign(clouds=['yes', 'no', 'yes', 'no', 'no', 'yes'])
df
df['sound'] = ['like plane', 'roaring', 'humming', 'like bee', 'barking', 'like angry cat']
df
ser = pd.Series(['morning', 'evening', 'night', 'full stars', 'late', 'dawn'], index = [0,1,2,3,4,5], name='time')
ser
print(ser.index)
print(ser.values)
df = pd.concat([df, ser], axis=1)
df
df.iloc[1, 5] = 'happy little'
derp
# Spalte löschen
derp = derp.drop('A', axis=1)
derp
# Reihe löschen
derp = derp.drop(1)
derp
# Mit Boolean Conditon
derp = derp.drop(derp[derp.B == 1.0].index)
derp
derp = derp.drop(derp[derp.C == 'foo1'].index)
derp
df
hamburg = df[df.town == 'Hamburg']
hamburg
df = df.loc[::-1]
df
df = df.loc[:, ::-1]
df
data.stack()
data.unstack()
data.T
df_mat = df.values
df_mat
df_li = pd.DataFrame({'col1':[[1,2],[3,4], [1,2], [1,3]],
'col2':[9,10,11,12]})
df_li
df_li_new = df_li.col1.apply(pd.Series)
df_li_new
new = pd.concat([df_li, df_li_new], axis=1)
new = new.drop('col1', axis=1)
new
# df.col.str.split(' ', expand=True)
# df[['ser1', 'ser2', 'ser3']] = df.col.str.split(' ', expand=True)
# nur einen der Splits behalten
# df['ser1'] = df.col.str.split(' ', expand=True)[0]
Inner Merge/ Inner join Voreingestellt bei Pandas. Behalte nur Reihen, bei denen der Merge 'on' Wert im rechten und linken DataFrame existiert.
Left Merge/ Left outer join Behalte jede Reihe im linken DataFrame. Wo es fehlende Werte der 'on' Variablen im Rechten DataFrame gibt, füge Nan Werte im resultierenden DataFrame ein.
Right Merge/ Right outer join Behalte alle Reihem im rechten DataFrame. Wo es fehlende Werte der 'on' Variablen im der linken Spalte gibt, füge Nans ein.
Outer Merge/ Full outer join Alle Reihen beider DataFrames werden zurück gegeben und, wo möglich, verbunden, ansonsten werden Nans eingefügt
# Concat hängt die neuen Spalten rechts an
# df = pd.concat([train, dfw], axis=1, sort=False)
# Darauf achten, dass die Spalten den gleichen Datentyp haben
# Nach der Verwendung von 'outer' Duplikate entfernen
# Reihen sind ungeordnet, neu nach zum Beispiel Datum sortieren
# result = pd.merge(df1, df2, on='ID', how='outer')
# Sicherstellen, dass die Merge-Keys in beiden Datensätzen unique sind
# pd.merge(left, right, validate='one_to_one')
# df = train.append(test, ignore_index = True)
# Wenn es train und test sind, dann vorher für das Target in test nans einfügen
# test['Target'] = np.nan
# Reihenweise
# Voraussetzung: gleiche Spalten, gleiche Benennung der Datei mit fortlaufender Zahl am Ende
# from glob import glob
# files = sorted(glob('data/files*.csv'))
# pd.concat((pd.read_csv(file) for file in files))
# pd.concat((pd.read_csv(file) for file in files), ignore_index=True)
# Spaltenweise
# files = sorted(glob('data/files*.csv'))
# pd.concat((pd.read_csv(file) for file in files), axis=1)
# df_1 = df.sample(frac=0.75, random_state = 24)
# df.to_csv('filename.csv', sep=',', encoding='utf-8', index=False)
# df.to_excel
# df.to_html
# df.to_latex
# df.to_csv('data.csv.zip')