<jupyter_start><jupyter_text>Příspěvky na transparentním účtu LEVICE- základní statistiky a grafy<jupyter_code>import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
sns.set_theme(style="darkgrid", palette="colorblind", font_scale=1.1, rc={'figure.figsize':(16,8)})<jupyter_output><empty_output><jupyter_text>Načtení dat- načte transakce za poslední 3 roky z transparentního účtu  - je definováno rozmezí 1.1.2018 až 31.12.2020- pročistí data pro účely dalších výpočtů<jupyter_code>[sumy, tx] = pd.read_html("https://ib.fio.cz/ib/transparent?a=2101181284&f=01.01.2018&t=31.12.2020")
sumy
# reverse order and replace NaNs
tx = tx.iloc[::-1].fillna('')
# set Datum as index
tx.index = pd.to_datetime(tx['Datum'], dayfirst=True)
tx = tx.drop(columns=["Datum"])
# convert Částka to float
tx['Částka'] = tx['Částka'].str.replace(",", ".").str.replace(r"[^0-9.\-]", "").astype(float)
# exclude negative values (i.e. expenses)
tx = tx[tx['Částka'] > 0]
tx<jupyter_output><empty_output><jupyter_text>Základní statistiky- počet, průměr, směrodatná odchylka, minimum, maximum, kvantily- kvantil *50%* je medián<jupyter_code>tx.describe()<jupyter_output><empty_output><jupyter_text>Výše příspěvků v jednotlivé měsíce<jupyter_code># contributions by days (+ filling the gaps)
cbd = tx['Částka'].groupby('Datum').sum().resample("1m").agg(np.sum)

plt.ticklabel_format(style = 'plain')
ax = plt.gca()
ax.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))

cbd.plot(kind='bar', ax=ax, title='Vybraná částka v jednotlivé měsíce')<jupyter_output><empty_output><jupyter_text>Celková suma příspěvků v čase<jupyter_code>f = plt.figure()
plt.ticklabel_format(style = 'plain')
ax = plt.gca()
ax.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))

cbd.cumsum().plot(ax=ax, title='Vývoj celkové vybrané sumy v čase')<jupyter_output><empty_output><jupyter_text>Nejčetnější výše příspěvků- jakými částkami přispívají lidé nejčastěji<jupyter_code># amount frequencies
amf = tx.value_counts(['Částka']).to_frame(name='Četnost')
amf['% Příspěvků'] = (100 * amf['Četnost'] / amf['Četnost'].sum()).round(2)
amf['% Vybraného'] = (100 * amf.index.get_level_values(0) * amf['Četnost'] / (amf.index.get_level_values(0) * amf['Četnost']).sum()).round(2)
amf.sort_values(by=['Četnost','% Vybraného'], ascending=False)[:10]<jupyter_output><empty_output><jupyter_text>Nejvýznamnější výše příspěvků* které výše přispěvku přispívají nejvíc k celkové sumě<jupyter_code>amf.sort_values(by='% Vybraného', ascending=False)[:10]<jupyter_output><empty_output><jupyter_text>Nejvyyší příspěvky<jupyter_code>tx.sort_values(by='Částka', ascending=False)[:10]<jupyter_output><empty_output><jupyter_text>Velcí vs. malí dárci- jaká část se vybrala v příspěvcích nad 10 tisíc a jaká část v příspěvcích pod 10 000 Kč<jupyter_code>bins = [0, 1000, 10000, (tx['Částka'].max() // 10000 + 1)*10000]
labels = ['pod 1000 Kč','1000 Kč až 9 999 Kč','nad 10 000 Kč']
txg = tx['Částka'].groupby(by=pd.cut(tx['Částka'], bins=bins, labels=labels, right=False)).sum()
txg.plot.pie(counterclock=False, startangle=90, title='Podíly různých výší příspěvků na celkové vybrané sumě',
            autopct=lambda pct: "{:1.1f}%\n({:,} Kč)".format(pct, int(txg.sum()*pct/100)))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16468842729970326, 'fraction_numerical': 0.03590504451038576, 'mean_word_length': 7.577608142493639, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 38, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '562611', 'license': 'MIT', 'n_tokens_mistral': 1537, 'n_tokens_neox': 1491, 'n_words': 246, 'path': 'levice-prispevky.ipynb', 'repo_name': 'matr01/jupyter-hello', 'size': '3370'}