Jika Anda belum tahu bagaimana mengirimkan data secara langsung ke pelanggan di alam bawah sadar atau, paling buruk, teks pesan yang terkendala, Anda akan membutuhkan informasi tentang bagaimana membuat proses interpretasi tabel lebih cepat dan nyaman.
Misalnya, excel menggunakan pemformatan bersyarat dan grafik mini untuk ini . Dan di artikel ini kita akan melihat bagaimana memvisualisasikan data menggunakan Python dan pustaka pandas
: kita akan menggunakan properti DataFrame.style
dan Options and settings
.
Menyiapkan rendering dasar
Kami mengimpor perpustakaan: pandas
untuk bekerja dengan data dan seaborn
untuk memuat set data klasik penguins
:
import pandas as pd
import seaborn as sns
Gunakan untuk pd.set_option
mengkonfigurasi keluaran sehingga:
- jumlah baris pada tabel tidak lebih dari 5;
- teks di dalam sel tercermin sepenuhnya terlepas dari panjangnya (ini berguna jika sel memiliki judul atau URL panjang yang ingin Anda lihat);
- semua angka direfleksikan dengan dua tempat desimal;
pd.set_option('max_rows', 5)
pd.set_option('display.max_colwidth', None)
pd.set_option('display.float_format', '{:.2f}'.format)
Mari baca dan lihat kerangka data.
penguins = sns.load_dataset(‘penguins’)
penguins
Jika Anda perlu mengembalikan pengaturan ke default, gunakan pd.reset_option
. Misalnya seperti ini, jika kita ingin mengupdate semua pengaturan sekaligus:
pd.reset_option('all')
Daftar lengkap properti set_option
.
Menyiapkan tampilan data dalam tabel
Format angka, celah dan kapitalisasi
Dataframe pandas
memiliki properti DataFrame.style
yang mengubah tampilan isi sel dengan kondisi baris atau kolom.
, , .
(penguins
.head(5)
.style
.format('{:.1f}', na_rep='-')
.format({'species': lambda x:x.lower(),
'island': lambda x:x.lower(),
'sex': lambda x: '-' if pd.isna(x) else x.lower()
})
)
, , ₽ :
(df
.style
.format({'price': '₽{:.2f}'})
)
— !
(, , )
, , , . subset
.
numeric_columns = ['bill_length_mm',
'bill_depth_mm',
'flipper_length_mm',
'body_mass_g']
, 5 .
(penguins
.head(5)
.style
.format('{:.1f}', na_rep='-')
.format({'species': lambda x:x.lower(),
'island': lambda x:x.lower(),
'sex': lambda x: '-' if pd.isna(x) else x.lower()
})
.highlight_null(null_color='lightgrey')
.highlight_max(color='yellowgreen', subset=numeric_columns)
.highlight_min(color='coral', subset=numeric_columns)
)
, 5 2 (!) .
: - Adelie.
Bar chart
, Adelie .
adelie_female = (penguins[(penguins['species'] == 'Adelie') &
(penguins['sex'] == 'FEMALE')]
.copy()
)
adelie_female['flipper_l_var'] = ((adelie_female['flipper_length_mm']-
adelie_female['flipper_length_mm'].mean()).round())
, 'flipper_l_var'
. :
set_properties
, 'flipper_l_var'
.
(adelie_female
.head(5)
.style
.format('{:.1f}', na_rep='-')
.format({'species': lambda x:x.lower(),
'island': lambda x:x.lower(),
'sex': lambda x: '-' if pd.isna(x) else x.lower()
})
.bar(subset=['flipper_l_var'],
align='mid',
color=['coral', 'yellowgreen'],
vmin=adelie_female['flipper_l_var'].min(),
vmax=adelie_female['flipper_l_var'].max()
)
.set_properties(**{'text-align': 'center'}, subset='flipper_l_var')
)
Heatmap
. , .
, .
species_stat=(penguins
.groupby('species')
.agg(penguins_count=('species','count'),
mean_bill_length=('bill_length_mm', 'mean'),
mean_bill_depth=('bill_depth_mm', 'mean'),
mean_flipper_length=('flipper_length_mm', 'mean'),
mean_body_mass=('body_mass_g', 'mean'),
)
)
, , - , .
. , ?! -, , .
(species_stat
.T
.style
.format("{:.1f}")
.background_gradient(cmap='Blues', axis=1)
)
— background_gradient
:
- (
cmap
):Blues
. ; - (
axis=1
).
Memformat tabel pandas
dengan DataFrame.style
dan Options and settings
membuat hidup lebih mudah, atau setidaknya meningkatkan keterbacaan kode dan laporan. Namun pengolahan tipe data, gap dan register lebih baik tentunya dilakukan dengan sengaja sebelum tahap visualisasi.
Selain itu, Anda dapat menangani:
- Ekspor ke excel ;
- Fungsi asli untuk pemformatan bersyarat. Kami menggunakan fungsi bawaan
highlight_max
,highlight_min
danhighlight_null
, tetapi untuk kondisi yang lebih rumit, Anda dapat menulis sendiri; - Perpustakaan ini seperti
sparklines
danPrettyPandas
.