Dengan Python, Anda bisa bekerja dengan data dan memvisualisasikannya. Tidak hanya programmer mengambil keuntungan dari ini, tetapi juga para ilmuwan: ahli biologi, fisikawan, dan sosiolog. Hari ini, bersama dengan
shwars , kurator
Python jumpstart kami untuk kursus
AI , kita sebentar akan berubah menjadi ahli meteorologi dan mempelajari iklim kota-kota Rusia. Dari perpustakaan untuk visualisasi dan bekerja dengan data, kami menggunakan Pandas, Matplotlib dan Bokeh.

Kami melakukan penelitian pada
Azure Notebooks , versi Jupyther Notebook berbasis cloud. Jadi, untuk memulai dengan Python, kita tidak perlu menginstal apa pun di komputer kita dan kita dapat bekerja langsung dari browser. Anda hanya perlu masuk dengan Akun Microsoft Anda, membuat perpustakaan dan laptop Python 3. Baru di dalamnya. Kemudian Anda dapat mengambil potongan kode dari artikel ini dan bereksperimen!
Kami mendapatkan datanya
Pertama-tama, kami mengimpor perpustakaan utama yang kami butuhkan.
Panda adalah pustaka untuk bekerja dengan data tabular, atau yang disebut frame data, dan
pyplot akan memungkinkan kita untuk membuat grafik.
import pandas as pd import matplotlib.pyplot as plt
Sumber data mudah ditemukan di Internet, tetapi kami telah menyiapkan data untuk Anda dalam format CSV yang nyaman. CSV adalah format teks di mana semua kolom dipisahkan oleh koma. Oleh karena itu nama - Nilai Dipisahkan Koma.
Panda dapat membuka file CSV dari disk lokal maupun langsung dari Internet. Data itu sendiri terletak di
repositori kami
di GitHub , jadi kami hanya perlu menentukan URL yang benar.
data = pd.read_csv("https://raw.githubusercontent.com/shwars/PythonJump/master/Data/climat_russia_cities.csv") data

Ganti nama kolom tabel sehingga lebih mudah untuk mengaksesnya dengan nama. Kita juga perlu mengonversi string ke nilai numerik untuk dapat mengoperasikannya. Ketika kami mencoba melakukan ini menggunakan fungsi
pd.to_numeric
, kami menemukan bahwa kesalahan aneh terjadi. Ini disebabkan oleh fakta bahwa alih-alih minus, tanda hubung panjang digunakan dalam teks.
data.columns=["City","Lat","Long","TempMin","TempColdest","AvgAnnual","TempWarmest","AbsMax","Precipitation"] data["TempMin"] = pd.to_numeric(data["TempMin"])
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) pandas/_libs/src/inference.pyx in pandas._libs.lib.maybe_convert_numeric() ValueError: Unable to parse string "β38.0" ... ... ... ValueError: Unable to parse string "β38.0" at position 0
Moralitas penting muncul dari masalah ini: data biasanya datang dalam bentuk "kotor", yang tidak nyaman untuk digunakan, dan tugas seorang ilmuwan data adalah untuk membawa data ini ke pandangan yang baik.
Anda dapat melihat bahwa beberapa kolom dalam tabel kami adalah tipe
object
, bukan tipe numerik
float64
. Di kolom seperti itu, kami akan mengganti tanda hubung dengan minus dan kemudian mengonversi seluruh tabel ke format angka. Kolom yang tidak dapat dikonversi (nama kota) akan tetap tidak berubah (untuk ini kami menggunakan
errors='ignore'
kunci
errors='ignore'
).
print(data.dtypes) for x in ["TempMin","TempColdest","AvgAnnual"]: data[x] = data[x].str.replace('β','-') data = data.apply(pd.to_numeric,errors='ignore') print(data.dtypes)
City object Lat float64 Long float64 TempMin object TempColdest object AvgAnnual object TempWarmest float64 AbsMax float64 Precipitation int64 dtype: object City object Lat float64 Long float64 TempMin float64 TempColdest float64 AvgAnnual float64 TempWarmest float64 AbsMax float64 Precipitation int64 dtype: object
Kami meneliti data
Sekarang kami memiliki data bersih, kami dapat mencoba membuat grafik yang menarik.
Suhu tahunan rata-rata
Sebagai contoh, mari kita lihat bagaimana suhu rata-rata tergantung pada garis lintang.
ax = data.plot(x="Lat",y="AvgAnnual",kind="Scatter") ax.set_xlabel("") ax.set_ylabel(" ")

Grafik menunjukkan bahwa semakin dekat ke garis khatulistiwa, semakin hangat.
Rekam kota
Sekarang mari kita lihat kota-kota yang merupakan juara suhu dan lihat apakah ada korelasi antara suhu minimum dan maksimum di kota.
ax=data.plot(x="TempMin",y="AbsMax",kind="scatter") ax.set_xlabel(" ") ax.set_ylabel(" ") ax.invert_xaxis()

Seperti yang Anda lihat, dalam hal ini tidak ada korelasi seperti itu. Ada kota-kota dengan iklim benua yang tajam, dan hanya kota-kota yang hangat dan dingin. Kami menemukan kota-kota dengan sebaran suhu maksimum, yaitu, kota-kota dengan iklim benua yang tajam.
data['spread'] = data['TempWarmest'] - data['TempColdest'] data.nlargest(3,'spread')

Kali ini kami tidak mencatat rekor tertinggi, tetapi rata-rata bulan terhangat dan terdingin. Seperti yang diharapkan, hamburan terbesar di antara kota-kota dari Republik Sakha (Yakutia).
Musim dingin dan musim panas
Untuk penelitian lebih lanjut, pertimbangkan kota dalam radius 300 km dari Moskow. Untuk menghitung jarak antara titik dalam garis lintang dan garis bujur, kami menggunakan pustaka
geopy , yang pertama-tama harus diinstal menggunakan
pip install
.
!pip install geopy import geopy.distance
Tambahkan satu kolom lagi ke tabel - jarak ke Moskow.
msk_coords = tuple(data.loc[data["City"]==""][["Lat","Long"]].iloc[0]) data["DistMsk"] = data.apply(lambda row : geopy.distance.distance(msk_coords,(row["Lat"],row["Long"])).km,axis=1) data.head()

Kami menggunakan ekspresi untuk memilih hanya garis yang menarik bagi kami.
msk = data.loc[data['DistMsk']<300] msk

Untuk kota-kota ini, kami menyusun jadwal suhu minimum, rata-rata tahunan, dan maksimum.
ax=msk.plot(x="City",y=["TempColdest","AvgAnnual","TempWarmest"],kind="bar",stacked="true") ax.legend(["","",""],loc='lower right')

Secara umum, tidak ada anomali yang diamati dalam jarak 300 kilometer di sekitar Moskow. Ivanovo terletak di utara kota-kota lainnya, oleh karena itu suhunya ada beberapa derajat lebih rendah.
Bekerja dengan geo-data
Sekarang mari kita coba menampilkan pada peta curah hujan tahunan rata-rata dengan merujuk ke kota-kota dan melihat bagaimana curah hujan tergantung pada lokasi geografis. Untuk ini kami menggunakan perpustakaan visualisasi lain -
Bokeh . Itu juga perlu diinstal.
Kemudian kita menghitung kolom lain - ukuran lingkaran, yang akan menunjukkan jumlah curah hujan. Koefisien dipilih secara empiris.
!pip install bokeh from bokeh.io import output_file, output_notebook, show from bokeh.models import ( GMapPlot, GMapOptions, ColumnDataSource, Circle, LogColorMapper, BasicTicker, ColorBar, DataRange1d, PanTool, WheelZoomTool, BoxSelectTool, HoverTool ) from bokeh.models.mappers import ColorMapper, LinearColorMapper from bokeh.palettes import Viridis5 from bokeh.plotting import gmap
Untuk bekerja dengan peta, Anda memerlukan kunci Google Maps API. Itu harus diperoleh secara independen
di situs .
Instruksi lebih rinci tentang penggunaan Bokeh untuk merencanakan grafik di peta dapat ditemukan di
sini dan di
sini .
google_key = "<INSERT YOUR KEY HERE>" data["PrecipSize"] = data["Precipitation"] / 50.0 map_options = GMapOptions(lat=msk_coords[0], lng=msk_coords[1], map_type="roadmap", zoom=4) plot = gmap(google_key,map_options=map_options) plot.title.text = " " source = ColumnDataSource(data=data) my_hover = HoverTool() my_hover.tooltips = [('', '@City'),('','@Precipitation')] plot.circle(x="Long", y="Lat", size="PrecipSize", fill_color="blue", fill_alpha=0.8, source=source) plot.add_tools(PanTool(), WheelZoomTool(), BoxSelectTool(), my_hover) output_notebook() show(plot)

Seperti yang Anda lihat, jumlah curah hujan terbesar terjadi di kota-kota pesisir. Meskipun ada sejumlah besar kota di mana curah hujannya rata-rata atau bahkan lebih rendah dari tingkat nasional.
Seluruh kode dengan komentar yang ditulis oleh Dmitry Soshnikov, Anda dapat melihat dan menjalankannya secara mandiri di
sini .
Ringkasan
Kami menunjukkan kemampuan bahasa tanpa menggunakan algoritma yang kompleks, perpustakaan tertentu, atau menulis ratusan baris kode. Namun, bahkan dipersenjatai dengan alat standar, Anda dapat menganalisis data Anda dan menarik beberapa kesimpulan.
Kumpulan data jauh dari selalu disusun dengan sempurna, jadi sebelum Anda mulai bekerja dengan visualisasi, Anda perlu mengaturnya. Kualitas visualisasi akan sangat tergantung pada kualitas data yang digunakan.
Ada sejumlah besar berbagai jenis bagan dan grafik, dan tidak perlu dibatasi pada perpustakaan standar saja.
Ada
Geoplotlib ,
Plotly ,
Kulit minimalis dan lain-lain.
Jika Anda ingin mempelajari lebih lanjut tentang bekerja dengan data dalam Python, serta berkenalan dengan kecerdasan buatan, maka kami mengundang Anda untuk intensif satu hari dari Distrik Biner -
jumpstart Python untuk AI .