In [1]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
In [27]:
df=pd.read_excel('formazottbi2.xlsx')
In [28]:
df
Out[28]:
A stack
egymásra rakja az oszlopokat.
In [29]:
pd.DataFrame(df.stack()).head()
Out[29]:
Most nem teljesen jó, mert előbb az országot és a tevékenységet ki kellene ragadjuk onnan. Ezért index
et csinálunk belőlük.
In [30]:
df.columns
Out[30]:
In [31]:
df.set_index(['Tevékenység','Ország']).head(2)
Out[31]:
Az eddig műveleteket memóriában végeztük. Most felülírjuk a df
et.
In [32]:
df=pd.DataFrame(df.set_index(['Tevékenység','Ország']).stack())
reset_index
paranccsal újra visszatesszük az index oszlopot az adatoszlopok közé.
In [33]:
df=df.reset_index()
In [34]:
df.head()
Out[34]:
Átnevezzük az oszlopokat azzá amit szeretnénk.
In [35]:
df.columns=['Tevékenység', 'Ország','Év','Érték']
In [36]:
df.head()
Out[36]:
Az év és érték oszlopokat előbb egész számmá kell konvertáljuk plottolás előtt.
In [37]:
df['Év']=df['Év'].astype(int)
In [ ]:
A space karaktereket először ki kell cseréljük. A pandasban a replace
függvény a teljes cella tartalmára vonatkozik, ezért a str.replpace
-t használjuk.
In [38]:
import numpy as np
In [43]:
df['Érték']=df['Érték'].str.replace('\xa0','')\
.str.replace('..','')
df['Érték']=df['Érték'].replace('b','').replace('e','').replace('',np.nan).astype(float)
In [44]:
df.plot(x='Év',y='Érték')
Out[44]:
Mentés
In [45]:
df.to_excel('bi_formazott.xlsx')
In [46]:
df.to_csv('bi_formazott.csv')
In [47]:
dg=pd.read_csv('data_tobbacco_europe_filtered.csv')
In [48]:
dg.head()
Out[48]:
In [49]:
dg.columns
Out[49]:
In [50]:
dg.T.head()
Out[50]:
In [51]:
dh=dg.T
In [52]:
dh.index[0]
Out[52]:
In [53]:
dh.columns=dh.loc[dh.index[0]]
In [54]:
dh=dh.loc[dh.index[1:]]
In [55]:
dh=dh.set_index('Country',append=True).T
In [56]:
dh.head(2)
Out[56]:
In [57]:
import numpy as np
In [58]:
dh=pd.DataFrame(dh.set_index(dh.columns[0],append=True).\
replace('Not available',np.nan).astype(float).stack().stack()).reset_index()
In [59]:
dh.head(2)
Out[59]:
In [60]:
dh.columns=['Ország','Év','Nem','Kérdés','Érték']
In [61]:
dh.to_excel('cigi.xlsx')