In [1]:
import gspread, gspread_dataframe
from gspread_dataframe import get_as_dataframe
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
import re
def num_to_col_letters(num) :
letters = ''
while num:
mod = (num - 1) % 26
letters += chr(mod + 65)
num = (num - 1) // 26
return ''.join(reversed(letters))
In [2]:
def connect_to_sheets(spreadsheet='GemeinsameBilanzierung_16_17', sheetname='') :
if type(spreadsheet) is str :
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('client-secret.json', scope)
client = gspread.authorize(creds)
spreadsheet = client.open(spreadsheet)
# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
if sheetname == '' :
return spreadsheet
else :
worksheet = spreadsheet.worksheet(sheetname)
return worksheet
In [3]:
workbook = connect_to_sheets()
sheet = connect_to_sheets(workbook, 'August')
In [12]:
col_titles = ['description', 'date', 'amount']
budgeting = get_as_dataframe(sheet, parse_dates=True, usecols=range(4),
skiprows=5, header=None).dropna(how='all')
budgeting.columns = ['budget_type'] + col_titles
max_bargeld = get_as_dataframe(sheet, parse_dates=True, usecols=range(7,10),
skiprows=6, header=None).dropna(how='all')
max_bargeld.columns = col_titles
max_bargeld['money_pot'] = 'BM'
paul_bargeld = get_as_dataframe(sheet, parse_dates=True, usecols=range(10,13),
skiprows=6, header=None).dropna(how='all')
paul_bargeld.columns = col_titles
paul_bargeld['money_pot'] = 'BP'
konto = get_as_dataframe(sheet, parse_dates=True, usecols=range(13,16),
skiprows=6, header=None).dropna(how='all')
konto.columns = col_titles
konto['money_pot'] = 'KG'
conjoined = pd.concat([max_bargeld, paul_bargeld, konto])
In [15]:
all_info = pd.merge(budgeting, conjoined, how='outer',
on=['description', 'date', 'amount'], indicator=True)
right_only = all_info[all_info['_merge'] == 'right_only']
display(right_only)
budget_type
description
date
amount
money_pot
_merge
113
NaN
Geld aufladen Mitarbeiter ausweis
01/08/17
-20
BM
right_only
114
NaN
Geld abheben
03/08/17
30
BM
right_only
115
NaN
Geld aufladen Trianon
02/08/17
-20
BM
right_only
116
NaN
Geld aus Schatulle
05/08/17
1,3
BM
right_only
117
NaN
Betriebsausflug
07/08/17
-18,5
BM
right_only
118
NaN
Geldfund
12/08/17
0,05
BM
right_only
119
NaN
BBk Karte Aufladen
14/08/17
-10
BM
right_only
120
NaN
Geld aus Schatulle
20/08/17
0,5
BM
right_only
121
NaN
Schatullenkorrektur
20/08/17
=2,17-1,12
BM
right_only
122
NaN
Schatullenkorrektur
20/08/17
-1,05
BM
right_only
123
NaN
Geld abheben
22/08/17
40
BM
right_only
124
NaN
Karte aufladen
28/08/17
-10
BM
right_only
125
NaN
Geld aus Schatulle
NaN
=1
BP
right_only
126
NaN
Geld aus Schatulle
08/08/17
1,35
BP
right_only
127
NaN
PUCK aufladen
NaN
-20
BP
right_only
128
NaN
Geld abheben
21/08/17
20
BP
right_only
129
NaN
Budgetbeitrag von BMS
28/07/17
1468
KG
right_only
130
NaN
Miete FFM auf Max Konto
02/08/17
450
KG
right_only
131
NaN
Ausgehen mit Kollegen
02/08/17
-20,6
KG
right_only
132
NaN
Abheben
03/08/17
-30
KG
right_only
133
NaN
Sommerticket DB
05/08/17
-96
KG
right_only
134
NaN
Sommerticket DB
05/08/17
-96
KG
right_only
135
NaN
Amazon Fail Topf
06/08/17
-4,61
KG
right_only
136
NaN
Handy Paul
10/08/17
-13,99
KG
right_only
137
NaN
Rossmann
10/08/17
-20,53
KG
right_only
138
NaN
Sommerticket DB
14/08/17
=-96*2
KG
right_only
139
NaN
Vorschuss für Sparticket
14/08/17
192
KG
right_only
140
NaN
Rewe
16/08/17
-3,42
KG
right_only
141
NaN
Real
21/08/17
-5,17
KG
right_only
142
NaN
Geld abheben
21/08/17
-20
KG
right_only
143
NaN
Geld abheben
22/08/17
-40
KG
right_only
144
NaN
Umbuchung
23/08/17
302,79
KG
right_only
145
NaN
Hotelkosten
24/08/17
-188
KG
right_only
146
NaN
Vorschuss Reisekosten Köln
26/08/17
193,6
KG
right_only
147
NaN
Prüfungsgebühr auf Max' Konto
28/08/17
15
KG
right_only
148
NaN
Prüfungsgebühr Dr. Hochs Konservatorium
28/08/17
-15
KG
right_only
149
NaN
Vodafone
28/08/17
-20,19
KG
right_only
In [28]:
def simple_payment(date, description, amount, budget_type, transaction_type, money_pot):
new_id = id_generation(date)
crsr = db.cursor()
crsr.execute("INSERT INTO money_events VALUES ({}, '{}', '{}', DATE('{}'), NULL, NULL, 'auto-gen');".format(
new_id, transaction_type, description, date))
crsr.execute("INSERT INTO budget_events VALUES ({}, '{}', {}, NULL, DATE('{}'), NULL, NULL, 'auto-gen');".format(
new_id, budget_type, amount, date))
crsr.execute("INSERT INTO payments VALUES ({}, '{}', {}, NULL, NULL, DATE('{}'), NULL, NULL, 'auto-gen');".format(
new_id, money_pot, amount, date))
db.commit()
In [29]:
for index, row in perfect_result.iterrows() :
simple_payment(row['date'], row['description'], row['amount'], row['budget_type'],
'Kartenzahlung' if row['money_pot'] == 'KG' else 'Barzahlung', row['money_pot'])
2017-08-01 00:00:00
2017-08-02 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-10 00:00:00
2017-08-03 00:00:00
2017-07-31 00:00:00
2017-07-31 00:00:00
2017-07-31 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-02 00:00:00
2017-08-04 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-06 00:00:00
2017-08-06 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-06 00:00:00
2017-08-13 00:00:00
2017-08-13 00:00:00
2017-08-11 00:00:00
2017-08-11 00:00:00
2017-08-13 00:00:00
In [30]:
def print_action_tables() :
crsr = db.cursor()
for table in ['money_events', 'budget_events', 'payments'] :
display(pd.read_sql_query('SELECT * FROM {};'.format(table), db))
print_action_tables()
id
type
description
creation_date
modification_dates
comments
complete
0
20170732
Kartenzahlung
Aldi
2017-07-31
None
None
YES
1
20170733
Kartenzahlung
Monatskarte FFM
2017-07-31
None
None
YES
2
20170734
Kartenzahlung
Netto
2017-07-31
None
None
YES
3
20170802
Kartenzahlung
Miete
2017-08-01
None
None
YES
4
20170803
Kartenzahlung
Miete FFM
2017-08-02
None
None
YES
5
20170804
Kartenzahlung
Berufsunfähigkeitsversicherung
2017-08-01
None
None
YES
6
20170805
Kartenzahlung
Haftpflichtversicherung
2017-08-01
None
None
YES
7
20170806
Kartenzahlung
Fitnessstudio
2017-08-03
None
None
YES
8
20170807
Kartenzahlung
Rewe
2017-08-01
None
None
YES
9
20170808
Kartenzahlung
Rossmann
2017-08-01
None
None
YES
10
20170809
Kartenzahlung
DM
2017-08-01
None
None
YES
11
20170810
Kartenzahlung
DM
2017-08-01
None
None
YES
12
20170811
Kartenzahlung
Handy Max
2017-08-10
None
None
YES
13
20170812
Kartenzahlung
Türkischer Supermarkt
2017-08-01
None
None
YES
14
20170813
Kartenzahlung
Real
2017-08-02
None
None
YES
15
20170814
Kartenzahlung
Kaufland
2017-08-04
None
None
YES
16
20170815
Kartenzahlung
McDonalds
2017-08-05
None
None
YES
17
20170816
Kartenzahlung
H&M
2017-08-05
None
None
YES
18
20170817
Kartenzahlung
Rewe Wasser
2017-08-05
None
None
YES
19
20170818
Kartenzahlung
Edeka
2017-08-05
None
None
YES
20
20170819
Kartenzahlung
Sitzplatz reservierung
2017-08-06
None
None
YES
21
20170820
Kartenzahlung
Amazon Bestellung
2017-08-06
None
None
YES
22
20170821
Kartenzahlung
Rewe
2017-08-07
None
None
YES
23
20170822
Kartenzahlung
H&M Hose
2017-08-07
None
None
YES
24
20170823
Kartenzahlung
Briefmarken
2017-08-07
None
None
YES
25
20170824
Kartenzahlung
Netto
2017-08-07
None
None
YES
26
20170825
Kartenzahlung
Real
2017-08-07
None
None
YES
27
20170826
Kartenzahlung
Amazon Festplatte Paul
2017-08-06
None
None
YES
28
20170827
Barzahlung
Eisessen
2017-08-13
None
None
YES
29
20170828
Barzahlung
Wasser
2017-08-13
None
None
YES
30
20170829
Kartenzahlung
Aldi
2017-08-11
None
None
YES
31
20170830
Kartenzahlung
Schirm Rossmann
2017-08-11
None
None
YES
32
20170831
Kartenzahlung
Rewe
2017-08-13
None
None
YES
id
budget_pot
amount
additional_description
creation_date
modification_dates
comments
complete
0
20170802
R
-568.00
None
2017-08-01
None
None
YES
1
20170803
R
-450.00
None
2017-08-02
None
None
YES
2
20170804
R
-49.05
None
2017-08-01
None
None
YES
3
20170805
R
-7.50
None
2017-08-01
None
None
YES
4
20170811
R
-7.99
None
2017-08-10
None
None
YES
5
20170806
G
-39.80
None
2017-08-03
None
None
YES
6
20170732
L
-23.97
None
2017-07-31
None
None
YES
7
20170733
R
-87.40
None
2017-07-31
None
None
YES
8
20170734
L
-9.44
None
2017-07-31
None
None
YES
9
20170807
L
-8.71
None
2017-08-01
None
None
YES
10
20170808
D
-9.17
None
2017-08-01
None
None
YES
11
20170809
D
-9.45
None
2017-08-01
None
None
YES
12
20170810
D
-12.25
None
2017-08-01
None
None
YES
13
20170812
L
-10.37
None
2017-08-01
None
None
YES
14
20170813
L
-6.86
None
2017-08-02
None
None
YES
15
20170814
L
-13.95
None
2017-08-04
None
None
YES
16
20170815
A
-2.59
None
2017-08-05
None
None
YES
17
20170816
S
-55.08
None
2017-08-05
None
None
YES
18
20170817
L
-1.17
None
2017-08-05
None
None
YES
19
20170818
L
-5.43
None
2017-08-05
None
None
YES
20
20170819
T
-4.50
None
2017-08-06
None
None
YES
21
20170820
S
-39.24
None
2017-08-06
None
None
YES
22
20170821
L
-21.00
None
2017-08-07
None
None
YES
23
20170822
S
-30.14
None
2017-08-07
None
None
YES
24
20170823
M
-21.50
None
2017-08-07
None
None
YES
25
20170824
L
-16.60
None
2017-08-07
None
None
YES
26
20170825
L
-3.99
None
2017-08-07
None
None
YES
27
20170826
S
-52.94
None
2017-08-06
None
None
YES
28
20170827
A
-4.80
None
2017-08-13
None
None
YES
29
20170828
L
-1.30
None
2017-08-13
None
None
YES
30
20170829
L
-19.31
None
2017-08-11
None
None
YES
31
20170830
D
-2.95
None
2017-08-11
None
None
YES
32
20170831
L
-34.42
None
2017-08-13
None
None
YES
id
money_pot
amount
additional_description
budget_effect_date
creation_date
modification_dates
comments
complete
0
20170802
KG
-568.00
None
None
2017-08-01
None
None
YES
1
20170803
KG
-450.00
None
None
2017-08-02
None
None
YES
2
20170804
KG
-49.05
None
None
2017-08-01
None
None
YES
3
20170805
KG
-7.50
None
None
2017-08-01
None
None
YES
4
20170811
KG
-7.99
None
None
2017-08-10
None
None
YES
5
20170806
KG
-39.80
None
None
2017-08-03
None
None
YES
6
20170732
KG
-23.97
None
None
2017-07-31
None
None
YES
7
20170733
KG
-87.40
None
None
2017-07-31
None
None
YES
8
20170734
KG
-9.44
None
None
2017-07-31
None
None
YES
9
20170807
KG
-8.71
None
None
2017-08-01
None
None
YES
10
20170808
KG
-9.17
None
None
2017-08-01
None
None
YES
11
20170809
KG
-9.45
None
None
2017-08-01
None
None
YES
12
20170810
KG
-12.25
None
None
2017-08-01
None
None
YES
13
20170812
KG
-10.37
None
None
2017-08-01
None
None
YES
14
20170813
KG
-6.86
None
None
2017-08-02
None
None
YES
15
20170814
KG
-13.95
None
None
2017-08-04
None
None
YES
16
20170815
KG
-2.59
None
None
2017-08-05
None
None
YES
17
20170816
KG
-55.08
None
None
2017-08-05
None
None
YES
18
20170817
KG
-1.17
None
None
2017-08-05
None
None
YES
19
20170818
KG
-5.43
None
None
2017-08-05
None
None
YES
20
20170819
KG
-4.50
None
None
2017-08-06
None
None
YES
21
20170820
KG
-39.24
None
None
2017-08-06
None
None
YES
22
20170821
KG
-21.00
None
None
2017-08-07
None
None
YES
23
20170822
KG
-30.14
None
None
2017-08-07
None
None
YES
24
20170823
KG
-21.50
None
None
2017-08-07
None
None
YES
25
20170824
KG
-16.60
None
None
2017-08-07
None
None
YES
26
20170825
KG
-3.99
None
None
2017-08-07
None
None
YES
27
20170826
KG
-52.94
None
None
2017-08-06
None
None
YES
28
20170827
BM
-4.80
None
None
2017-08-13
None
None
YES
29
20170828
BM
-1.30
None
None
2017-08-13
None
None
YES
30
20170829
KG
-19.31
None
None
2017-08-11
None
None
YES
31
20170830
KG
-2.95
None
None
2017-08-11
None
None
YES
32
20170831
KG
-34.42
None
None
2017-08-13
None
None
YES
In [20]:
content = get_as_dataframe(sheet, parse_dates=True, skiprows=3, header=1)
In [21]:
display(content)
Realer Geldverbrauch
Unnamed: 1
Unnamed: 2
=SUM(R[1]C[0]:R[95]C[0])
Unnamed: 4
Unnamed: 5
Unnamed: 6
Bargeld Max
Unnamed: 8
=SUM(R[1]C[0]:R[97]C[0])
Bargeld Paul
Unnamed: 11
=SUM(R[1]C[0]:R[97]C[0]).1
Konto Ing-DiBa
Unnamed: 14
=SUM(R[1]C[0]:R[95]C[0]).1
Unnamed: 16
0
R
Miete
01/08/17
-568
Haben Vermögen
NaN
=R[1]C[0]+R[2]C[0]
Aktueller Stand
NaN
47,2
Aktueller Stand
NaN
NaN
Aktueller Stand
NaN
405,74
NaN
1
R
Miete FFM
02/08/17
-450
NaN
Verfügung
=R[-4]C[9]+R[-2]C[9]+R[-2]C[6]+R[-2]C[3]+R[-3]...
Geld aufladen Mitarbeiter ausweis
01/08/17
-20
Geld aus Schatulle
NaN
=1
Budgetbeitrag von BMS
28/07/17
1468
NaN
2
R
Berufsunfähigkeitsversicherung
01/08/17
-49,05
NaN
Sparen
=R[-4]C[9]+R[-6]C[9]
Geld abheben
03/08/17
30
Brot
01/08/17
=-0,95
Aldi
31/07/17
-23,97
NaN
3
R
Strom EnviaM
NaN
-51
NaN
NaN
NaN
Geld aufladen Trianon
02/08/17
-20
Brot
08/08/17
-1,4
Monatskarte FFM
31/07/17
-87,4
NaN
4
R
Vodafone
NaN
-19,99
Einnahmen
NaN
NaN
Geld aus Schatulle
05/08/17
1,3
Geld aus Schatulle
08/08/17
1,35
Netto
31/07/17
-9,44
NaN
5
M
Telefonie
NaN
-6
Budget-Einnahmen
NaN
NaN
Betriebsausflug
07/08/17
-18,5
Geld abheben
NaN
20
Haftpflichtversicherung
01/08/17
-7,5
NaN
6
R
Rechtsschutzversicherung
30/01/17
-13,9
Sondereinnahmen
NaN
NaN
Geldfund
12/08/17
0,05
PUCK aufladen
NaN
-20
Berufsunfähigkeitsversicherung
01/08/17
-49,05
NaN
7
R
Haftpflichtversicherung
01/08/17
-7,5
Realvermögenszuwachs (1 Mo)
NaN
=R[-7]C[0]-Juli!R[-7]C[0]
Eisessen
13/08/17
-4,8
Geld abheben
21/08/17
20
Miete
01/08/17
-568
NaN
8
G
GEW
NaN
-2,5
Realvermögenszuwachs (3 Mo)
NaN
=R[-8]C[0]-'Mai+Juni'!R[-8]C[0]
Wasser
13/08/17
-1,3
NaN
NaN
NaN
Rewe
01/08/17
-8,71
NaN
9
R
Semestergebühr Paul
21/06/16
=-276,91/6
NaN
NaN
BBk Karte Aufladen
14/08/17
-10
NaN
NaN
NaN
Rossmann
01/08/17
-9,17
NaN
10
R
GEZ
31/03/17
-17,5
Ausgaben
NaN
NaN
Eisessen
17/08/17
-1,2
NaN
NaN
NaN
DM
01/08/17
-9,45
NaN
11
R
Handy Max
10/08/17
-7,99
Real
NaN
=R[-12]C[-3]
Toilette
18/08/17
-0,25
NaN
NaN
NaN
DM
01/08/17
-12,25
NaN
12
R
Handy Paul
10/08/17
-7,99
NaN
NaN
NaN
Spitzer
19/08/17
-2
NaN
NaN
NaN
Türkischer Supermarkt
01/08/17
-10,37
NaN
13
G
Spotify Max
15/08/17
-4,99
Ausgehen
A
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Geld aus Schatulle
20/08/17
0,5
NaN
NaN
NaN
Miete FFM auf Max Konto
02/08/17
450
NaN
14
G
Apple Music Paul
NaN
-4,99
Drogerie
D
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Schatullenkorrektur
20/08/17
=2,17-1,12
NaN
NaN
NaN
Miete FFM
02/08/17
-450
NaN
15
G
Backblaze Max
18/04/17
=-45,25/12
Gebühren
G
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Schatullenkorrektur
20/08/17
-1,05
NaN
NaN
NaN
Ausgehen mit Kollegen
02/08/17
-20,6
NaN
16
G
Backblaze Paul
18/04/17
=-3,77
Lebensmittel
L
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Geld abheben
22/08/17
40
NaN
NaN
NaN
Real
02/08/17
-6,86
NaN
17
G
Fitnessstudio
03/08/17
-39,8
Miscellaneous
M
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Wein
22/08/17
-10
NaN
NaN
NaN
Fitnessstudio
03/08/17
-39,8
NaN
18
L
Aldi
31/07/17
-23,97
regelm. Ausg.
R
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Tapas
23/08/17
-14
NaN
NaN
NaN
Abheben
03/08/17
-30
NaN
19
R
Monatskarte FFM
31/07/17
-87,4
Mensaessen
AM
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
Kaufland
04/08/17
-13,95
NaN
20
L
Netto
31/07/17
-9,44
Sachen
S
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
McDonalds
05/08/17
-2,59
NaN
21
L
Rewe
01/08/17
-8,71
Transport
T
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
H&M
05/08/17
-55,08
NaN
22
D
Rossmann
01/08/17
-9,17
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
Rewe Wasser
05/08/17
-1,17
NaN
23
D
DM
01/08/17
-9,45
Budgetierung
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
Sommerticket DB
05/08/17
-96
NaN
24
D
DM
01/08/17
-12,25
Essen
NaN
=300+R[-8]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Sommerticket DB
05/08/17
-96
NaN
25
AM
Mittagessen Casino
01/08/17
-2,8
Sonstiges
NaN
=150+R[-11]C[0]+R[-8]C[0]+R[-4]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Edeka
05/08/17
-5,43
NaN
26
L
Türkischer Supermarkt
01/08/17
-10,37
Sachen
NaN
=100+R[-6]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Amazon Bestellung
06/08/17
-39,24
NaN
27
L
Brot
01/08/17
=-0,95
Ausgehen
NaN
=70+R[-14]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Sitzplatz reservierung
06/08/17
-4,5
NaN
28
AM
Doppelter Kaffee Trianon
02/08/17
-1,5
Mensaessen
NaN
=60+R[-9]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Rewe
07/08/17
-21
NaN
29
AM
Kaffee
02/08/17
-0,7
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
H&M Hose
07/08/17
-30,14
NaN
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
71
A
Wasser
13/08/17
-1,3
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
72
AM
Balisto
14/08/17
-0,5
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
73
L
Netto
14/08/17
-13,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
74
T
Fahrkarte Frankfurt
14/08/17
-2,9
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
75
AM
Mittagessen Casino
15/08/17
-4,3
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
76
AM
KitKat
15/08/17
-1
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
77
L
Rewe
16/08/17
-17,57
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
78
AM
Kakao
16/08/17
-0,4
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
79
L
Real
18/08/17
-10,19
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
80
L
Rewe
18/08/17
-2,69
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
81
AM
Suppe
18/08/17
-0,6
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
82
T
Sitzplatz reservierung
18/08/17
-4,5
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
83
A
Eisessen
17/08/17
-1,2
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
84
M
Toilette
18/08/17
-0,25
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
85
S
Spitzer
19/08/17
-2
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
86
L
Netto
19/08/17
-2,31
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
87
L
Netto
19/08/17
-32,39
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
88
L
Asia Markt
19/08/17
-7,12
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
89
D
DM
19/08/17
-16,7
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
90
D
Apotheke
19/08/17
-27,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
91
AM
Real
16/08/17
-3,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
92
A
McDonalds Frühstück Köln
22/08/17
-2,99
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
93
L
Penny
22/08/17
-2,57
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
94
L
Penny Brötchen
23/08/17
-0,29
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
95
A
Rewe
23/08/17
-2,18
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
96
T
Einzelticket Köln
22/08/17
-2,8
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
97
A
Wein
22/08/17
-10
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
98
A
Tapas
23/08/17
-14
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
99
M
Tree-App
20/08/17
-2,29
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
100
L
Real
21/08/17
-5,17
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
101 rows × 17 columns
In [34]:
mytry = content.iloc[100].copy()
mytry[0] = 'A'
mytry[1] = 'Eis'
mytry[2] = '25/08/17'
mytry[3] = -1.2
display(mytry)
from numpy import NaN
content.loc[101] = mytry
display(content)
Realer Geldverbrauch A
Unnamed: 1 Eis
Unnamed: 2 25/08/17
=SUM(R[1]C[0]:R[95]C[0]) -1.2
Unnamed: 4 NaN
Unnamed: 5 NaN
Unnamed: 6 NaN
Bargeld Max NaN
Unnamed: 8 NaN
=SUM(R[1]C[0]:R[97]C[0]) NaN
Bargeld Paul NaN
Unnamed: 11 NaN
=SUM(R[1]C[0]:R[97]C[0]).1 NaN
Konto Ing-DiBa NaN
Unnamed: 14 NaN
=SUM(R[1]C[0]:R[95]C[0]).1 NaN
Unnamed: 16 NaN
Name: 100, dtype: object
Realer Geldverbrauch
Unnamed: 1
Unnamed: 2
=SUM(R[1]C[0]:R[95]C[0])
Unnamed: 4
Unnamed: 5
Unnamed: 6
Bargeld Max
Unnamed: 8
=SUM(R[1]C[0]:R[97]C[0])
Bargeld Paul
Unnamed: 11
=SUM(R[1]C[0]:R[97]C[0]).1
Konto Ing-DiBa
Unnamed: 14
=SUM(R[1]C[0]:R[95]C[0]).1
Unnamed: 16
0
R
Miete
01/08/17
-568
Haben Vermögen
NaN
=R[1]C[0]+R[2]C[0]
Aktueller Stand
NaN
47,2
Aktueller Stand
NaN
NaN
Aktueller Stand
NaN
405,74
NaN
1
R
Miete FFM
02/08/17
-450
NaN
Verfügung
=R[-4]C[9]+R[-2]C[9]+R[-2]C[6]+R[-2]C[3]+R[-3]...
Geld aufladen Mitarbeiter ausweis
01/08/17
-20
Geld aus Schatulle
NaN
=1
Budgetbeitrag von BMS
28/07/17
1468
NaN
2
R
Berufsunfähigkeitsversicherung
01/08/17
-49,05
NaN
Sparen
=R[-4]C[9]+R[-6]C[9]
Geld abheben
03/08/17
30
Brot
01/08/17
=-0,95
Aldi
31/07/17
-23,97
NaN
3
R
Strom EnviaM
NaN
-51
NaN
NaN
NaN
Geld aufladen Trianon
02/08/17
-20
Brot
08/08/17
-1,4
Monatskarte FFM
31/07/17
-87,4
NaN
4
R
Vodafone
NaN
-19,99
Einnahmen
NaN
NaN
Geld aus Schatulle
05/08/17
1,3
Geld aus Schatulle
08/08/17
1,35
Netto
31/07/17
-9,44
NaN
5
M
Telefonie
NaN
-6
Budget-Einnahmen
NaN
NaN
Betriebsausflug
07/08/17
-18,5
Geld abheben
NaN
20
Haftpflichtversicherung
01/08/17
-7,5
NaN
6
R
Rechtsschutzversicherung
30/01/17
-13,9
Sondereinnahmen
NaN
NaN
Geldfund
12/08/17
0,05
PUCK aufladen
NaN
-20
Berufsunfähigkeitsversicherung
01/08/17
-49,05
NaN
7
R
Haftpflichtversicherung
01/08/17
-7,5
Realvermögenszuwachs (1 Mo)
NaN
=R[-7]C[0]-Juli!R[-7]C[0]
Eisessen
13/08/17
-4,8
Geld abheben
21/08/17
20
Miete
01/08/17
-568
NaN
8
G
GEW
NaN
-2,5
Realvermögenszuwachs (3 Mo)
NaN
=R[-8]C[0]-'Mai+Juni'!R[-8]C[0]
Wasser
13/08/17
-1,3
NaN
NaN
NaN
Rewe
01/08/17
-8,71
NaN
9
R
Semestergebühr Paul
21/06/16
=-276,91/6
NaN
NaN
BBk Karte Aufladen
14/08/17
-10
NaN
NaN
NaN
Rossmann
01/08/17
-9,17
NaN
10
R
GEZ
31/03/17
-17,5
Ausgaben
NaN
NaN
Eisessen
17/08/17
-1,2
NaN
NaN
NaN
DM
01/08/17
-9,45
NaN
11
R
Handy Max
10/08/17
-7,99
Real
NaN
=R[-12]C[-3]
Toilette
18/08/17
-0,25
NaN
NaN
NaN
DM
01/08/17
-12,25
NaN
12
R
Handy Paul
10/08/17
-7,99
NaN
NaN
NaN
Spitzer
19/08/17
-2
NaN
NaN
NaN
Türkischer Supermarkt
01/08/17
-10,37
NaN
13
G
Spotify Max
15/08/17
-4,99
Ausgehen
A
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Geld aus Schatulle
20/08/17
0,5
NaN
NaN
NaN
Miete FFM auf Max Konto
02/08/17
450
NaN
14
G
Apple Music Paul
NaN
-4,99
Drogerie
D
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Schatullenkorrektur
20/08/17
=2,17-1,12
NaN
NaN
NaN
Miete FFM
02/08/17
-450
NaN
15
G
Backblaze Max
18/04/17
=-45,25/12
Gebühren
G
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Schatullenkorrektur
20/08/17
-1,05
NaN
NaN
NaN
Ausgehen mit Kollegen
02/08/17
-20,6
NaN
16
G
Backblaze Paul
18/04/17
=-3,77
Lebensmittel
L
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Geld abheben
22/08/17
40
NaN
NaN
NaN
Real
02/08/17
-6,86
NaN
17
G
Fitnessstudio
03/08/17
-39,8
Miscellaneous
M
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Wein
22/08/17
-10
NaN
NaN
NaN
Fitnessstudio
03/08/17
-39,8
NaN
18
L
Aldi
31/07/17
-23,97
regelm. Ausg.
R
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
Tapas
23/08/17
-14
NaN
NaN
NaN
Abheben
03/08/17
-30
NaN
19
R
Monatskarte FFM
31/07/17
-87,4
Mensaessen
AM
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
Kaufland
04/08/17
-13,95
NaN
20
L
Netto
31/07/17
-9,44
Sachen
S
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
McDonalds
05/08/17
-2,59
NaN
21
L
Rewe
01/08/17
-8,71
Transport
T
=SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]...
NaN
NaN
NaN
NaN
NaN
NaN
H&M
05/08/17
-55,08
NaN
22
D
Rossmann
01/08/17
-9,17
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
Rewe Wasser
05/08/17
-1,17
NaN
23
D
DM
01/08/17
-9,45
Budgetierung
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
Sommerticket DB
05/08/17
-96
NaN
24
D
DM
01/08/17
-12,25
Essen
NaN
=300+R[-8]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Sommerticket DB
05/08/17
-96
NaN
25
AM
Mittagessen Casino
01/08/17
-2,8
Sonstiges
NaN
=150+R[-11]C[0]+R[-8]C[0]+R[-4]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Edeka
05/08/17
-5,43
NaN
26
L
Türkischer Supermarkt
01/08/17
-10,37
Sachen
NaN
=100+R[-6]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Amazon Bestellung
06/08/17
-39,24
NaN
27
L
Brot
01/08/17
=-0,95
Ausgehen
NaN
=70+R[-14]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Sitzplatz reservierung
06/08/17
-4,5
NaN
28
AM
Doppelter Kaffee Trianon
02/08/17
-1,5
Mensaessen
NaN
=60+R[-9]C[0]
NaN
NaN
NaN
NaN
NaN
NaN
Rewe
07/08/17
-21
NaN
29
AM
Kaffee
02/08/17
-0,7
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
H&M Hose
07/08/17
-30,14
NaN
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
72
AM
Balisto
14/08/17
-0,5
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
73
L
Netto
14/08/17
-13,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
74
T
Fahrkarte Frankfurt
14/08/17
-2,9
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
75
AM
Mittagessen Casino
15/08/17
-4,3
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
76
AM
KitKat
15/08/17
-1
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
77
L
Rewe
16/08/17
-17,57
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
78
AM
Kakao
16/08/17
-0,4
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
79
L
Real
18/08/17
-10,19
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
80
L
Rewe
18/08/17
-2,69
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
81
AM
Suppe
18/08/17
-0,6
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
82
T
Sitzplatz reservierung
18/08/17
-4,5
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
83
A
Eisessen
17/08/17
-1,2
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
84
M
Toilette
18/08/17
-0,25
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
85
S
Spitzer
19/08/17
-2
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
86
L
Netto
19/08/17
-2,31
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
87
L
Netto
19/08/17
-32,39
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
88
L
Asia Markt
19/08/17
-7,12
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
89
D
DM
19/08/17
-16,7
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
90
D
Apotheke
19/08/17
-27,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
91
AM
Real
16/08/17
-3,42
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
92
A
McDonalds Frühstück Köln
22/08/17
-2,99
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
93
L
Penny
22/08/17
-2,57
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
94
L
Penny Brötchen
23/08/17
-0,29
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
95
A
Rewe
23/08/17
-2,18
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
96
T
Einzelticket Köln
22/08/17
-2,8
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
97
A
Wein
22/08/17
-10
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
98
A
Tapas
23/08/17
-14
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
99
M
Tree-App
20/08/17
-2,29
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
100
L
Real
21/08/17
-5,17
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
101
A
Eis
25/08/17
-1.2
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
102 rows × 17 columns
In [35]:
new_sheet = connect_to_sheets(workbook, 'new_August')
set_with_dataframe(new_sheet, content)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/usr/local/lib/python3.6/site-packages/gspread/models.py in worksheet(self, title)
186 try:
--> 187 return finditem(lambda x: x.title == title, self._sheet_list)
188 except StopIteration:
/usr/local/lib/python3.6/site-packages/gspread/utils.py in finditem(func, seq)
26 """
---> 27 return next((item for item in seq if func(item)))
28
StopIteration:
During handling of the above exception, another exception occurred:
WorksheetNotFound Traceback (most recent call last)
<ipython-input-35-d889bfff9103> in <module>()
1
----> 2 new_sheet = connect_to_sheets(workbook, 'new_August')
3
4 set_with_dataframe(new_sheet, content)
<ipython-input-2-a7515592bc2b> in connect_to_sheets(spreadsheet, sheetname)
12 return spreadsheet
13 else :
---> 14 worksheet = spreadsheet.worksheet(sheetname)
15 return worksheet
/usr/local/lib/python3.6/site-packages/gspread/models.py in worksheet(self, title)
187 return finditem(lambda x: x.title == title, self._sheet_list)
188 except StopIteration:
--> 189 raise WorksheetNotFound(title)
190
191 def get_worksheet(self, index):
WorksheetNotFound: new_August
In [37]:
sheet.update_acell('A107', 'A')
sheet.update_acell('B107', 'Eis')
sheet.update_acell('C107', '25/08/17')
sheet.update_acell('D107', -1.2)
In [38]:
sheet.update_acell('D107', '-1,20 €')
In [43]:
first_col = sheet.col_values(1)
In [50]:
print(first_col.index('', 5))
## note python list is counted by 0, the excel counting starts at 1, i.e. the result 107 means that row 108 is
## the first one thats empty
first_col[107]
107
Out[50]:
''
In [ ]:
Content source: maxkoe/budgeter
Similar notebooks: