Pos terakhir # 5 untuk pemula dikhususkan untuk visualisasi komparatif data pemilu.
Visualisasi komparatif data pemilu
Sekarang pertimbangkan kumpulan data pemilihan umum lainnya, kali ini di Rusia, tahun 2011. Rusia adalah negara yang jauh lebih besar, dan karena itu jauh lebih banyak data pemilih. Untuk melakukan ini, kami memuat satu file TSV besar ke dalam RAM dengan bidang data tab delimited.
def load_ru():
''' '''
return pd.read_csv('data/ch01/Russia2011.tsv', '\t')
Mari kita lihat nama kolom apa yang tersedia dalam data Rusia:
def ex_1_29():
'''
'''
return load_ru().columns
Daftar kolom berikut akan ditampilkan:
Index([' ', ' โ', ' ',
' , ',
...
' ',
' - - ',
' " "',
' ',
' " ""',
' " "',
' " "'],
dtype='object')
Nama kolom dalam kumpulan data Rusia sangat deskriptif, tetapi mungkin lebih panjang dari yang diperlukan. Selain itu, akan lebih mudah jika kolom yang mewakili atribut yang sama dengan yang telah kita lihat di data pemilu Inggris Raya (misalnya, pembagian pemenang dan jumlah pemilih) diberi label dengan cara yang sama di kedua kumpulan data. Mari ganti namanya dengan benar.
Bersama dengan dataset, fungsi pandas library rename
mengharapkan kamus di mana kunci dengan nama kolom saat ini dipetakan ke nilai dengan nama baru. Jika kami menggabungkan ini dengan data yang telah kami lihat, maka kami mendapatkan yang berikut:
def load_ru_victors():
''' ,
, '''
new_cols_dict = {
' , ':'',
' ':
' ',
' " "':''
}
newcols = list(new_cols_dict.values())
df = load_ru().rename( columns=new_cols_dict )[newcols]
df[' '] = df[''] / df[' ']
df[''] = df[' '] / df['']
return df
pandas divide
, /
, . (nan
) , fill_value
. nan
, . :
df[ ' ' ] = \
df[ '' ].divide( df[ ' ' ], \
fill_value=1 )
, ( ). , , , :
def ex_1_30():
'''
'''
load_ru_victors()[''].hist(bins=20)
plt.xlabel(' ')
plt.ylabel('')
plt.show()
:
, . , 80% 100% โ , .
, (), . :
def ex_1_31():
'''
'''
qqplot( load_ru_victors()[' '].dropna() )
plt.show()
:
, , S- . , . , , .
, , , : 0.5 1.0 , 0.7 1.0. , 100% , ( , ), 1.0 .
, , 100% . .
, . , , , .
, , :
, , ,
,
, , .
(), . Probability Mass Function (PMF), , . , , , , , . , , 0 1, ( 1 ), 1.
, . โ , . โ ( ).
, , 0 1. , , :
def plot_as_pmf(dt, label, ax):
'''
( )'''
s = pd.cut(dt, bins=40, labels=False) # 40
pmf = s.value_counts().sort_index() / len(s) #
newax = pmf.plot(label=label, grid=True, ax=ax)
return newax
, :
def ex_1_32():
''' ,
'''
ax = plot_as_pmf(load_uk_victors()[''], '', None)
plot_as_pmf(load_ru_victors()[''], '', ax)
plt.xlabel(' ') #
plt.ylabel('')
plt.legend(loc='best')
plt.show()
:
. , โ , (0.6366 0.6523) โ 100%. , . , , , , ( ), .
, , , 50% . (Peter Klimek) , .
, , , . , . , , , , - . , , , .
, , .
, , . : , , , . pandas scatter
, plot
.
def ex_1_33():
'''
'''
df = load_uk_victors()[ ['', ' '] ]
df.plot.scatter(0, 1, s=3)
plt.xlabel('')
plt.ylabel(' ')
plt.show()
:
, . โ , , , : , , .
, 2010 . : ยซยป . , ยซยป , , . .
, :
def ex_1_34():
''' '''
df = load_ru_victors()[ ['', ' '] ]
df.plot.scatter(0, 1, s=3)
plt.xlabel('')
plt.ylabel(' ')
plt.show()
:
, . , , .
, , , . , , , .
-, pandas alpha
scatter 0 1, 1 , 0 โ .
def ex_1_35():
''' ( ) '''
df = load_ru_victors()[ ['', ' '] ]
rows = sp.random.choice(df.index.values, 10000)
df.loc[rows].plot.scatter(0, 1, s=3, alpha=0.1)
plt.xlabel('')
plt.ylabel(' ')
plt.axis([0, 1.05, 0, 1.05])
plt.show()
:
. ยซ ยป , 100% 100%- . , . , , 2011 . .
. , .
, , . , Python scipy. , pandas, , . .
. - , . , , .