Sains Data

Tutorial Rangka Data Pandas

Tutorial Rangka Data Pandas

Pandas untuk Analisis Berangka

Pandas dikembangkan kerana memerlukan kaedah yang cekap untuk menguruskan data kewangan di Python.  Pandas adalah perpustakaan yang boleh diimport ke python untuk membantu memanipulasi dan mengubah data berangka. Wes McKinney memulakan projek ini pada tahun 2008.  Pandas kini dikendalikan oleh sekumpulan jurutera dan disokong oleh organisasi nirlaba NUMFocus, yang akan menjamin pertumbuhan dan perkembangan masa depannya. Ini bermakna bahawa panda akan menjadi perpustakaan yang stabil selama bertahun-tahun dan dapat dimasukkan ke dalam aplikasi anda tanpa perlu bimbang tentang projek kecil.

Meskipun panda pada awalnya dikembangkan untuk memodelkan data keuangan, struktur datanya dapat digunakan untuk memanipulasi berbagai data berangka.  Pandas mempunyai sejumlah struktur data yang terbina dalam dan dapat digunakan untuk memodelkan dan memanipulasi data berangka dengan mudah. Tutorial ini akan merangkumi panda DataFrame struktur data secara mendalam.

Apa itu DataFrame?

A DataFrame adalah salah satu struktur data utama di panda dan mewakili pengumpulan data 2-D.  Terdapat banyak objek serupa dengan struktur data 2-D jenis ini, antaranya merangkumi spreadsheet Excel yang selalu popular, jadual pangkalan data atau array 2-D yang terdapat di kebanyakan bahasa pengaturcaraan.  Berikut adalah contoh a DataFrame dalam format grafik.  Ia mewakili sekumpulan jangka masa harga penutupan stok mengikut tarikh.

Tutorial ini akan memandu anda melalui banyak kaedah kerangka data dan saya akan menggunakan model kewangan dunia nyata untuk menunjukkan fungsi-fungsi ini.

Mengimport Data

Kelas panda mempunyai beberapa kaedah terbina dalam untuk membantu mengimport data ke dalam struktur data. Di bawah ini adalah contoh cara mengimport data ke Panel panda dengan Pembaca Data kelas.  Ia boleh digunakan untuk mengimport data dari beberapa sumber data kewangan percuma termasuk Quandl, Yahoo Finance dan Google. Untuk menggunakan perpustakaan panda, anda perlu menambahkannya sebagai import dalam kod anda.

import panda sebagai pd

Kaedah di bawah ini akan memulakan program dengan menjalankan kaedah menjalankan tutorial.

jika __nama__ == "__main__":
tutorial_jalankan ()

The tutorial_jalankan kaedah ada di bawah.  Ini adalah kaedah seterusnya yang akan saya tambahkan pada kod.  Baris pertama kaedah ini menentukan senarai ticker saham.  Pemboleh ubah ini akan digunakan kemudian dalam kod sebagai senarai stok yang akan diminta data untuk mengisi DataFrame.  Baris kedua kod memanggil dapatkan_data kaedah.  Seperti yang akan kita lihat, dapatkan_data kaedah mengambil tiga parameter sebagai inputnya. Kami akan memberikan senarai senarai saham, tarikh mula, dan tarikh akhir untuk data yang akan kami minta.

def tutorial_run ():
#Stock Tickers untuk mendapatkan sumber dari Yahoo Finance
simbol = ['SPY', 'AAPL', 'GOOG']
#mendapatkan data
df = get_data (simbol, '2006-01-03', '2017-12-31')

Di bawah ini kita akan menentukan dapatkan_data kaedah.  Seperti yang saya nyatakan di atas memerlukan tiga parameter senarai simbol, tarikh mula dan akhir.

Baris pertama kod mentakrifkan panel panda dengan memberi contoh a Pembaca Data kelas.  Panggilan ke Pembaca Data kelas akan bersambung ke pelayan Yahoo Finance dan meminta nilai penutupan harian tinggi, rendah, tutup dan laras untuk setiap ekuiti di simbol senarai.  Data ini dimuat ke objek panel oleh panda.

A panel adalah matriks 3-D dan boleh dianggap sebagai "timbunan" dari Rangka Data.  Masing-masing DataFrame dalam timbunan mengandungi salah satu nilai harian untuk stok dan julat tarikh yang diminta.  Contohnya, di bawah DataFrame, dibentangkan sebelumnya, adalah harga penutup DataFrame dari permintaan itu.  Setiap jenis harga (tinggi, rendah, tutup dan laras disesuaikan) mempunyai harga tersendiri DataFrame di panel yang dihasilkan dikembalikan dari permintaan.

Baris kod kedua memotong panel menjadi satu DataFrame dan memberikan data yang dihasilkan kepada df.  Ini akan menjadi pemboleh ubah saya untuk DataFrame yang saya gunakan untuk baki tutorial.  Ia menyimpan nilai penutupan harian untuk ketiga-tiga ekuiti untuk julat tarikh yang ditentukan.  Panel dihiris dengan menentukan panel mana Rangka Data anda ingin kembali.  Dalam garis contoh kod di bawah ini, ia adalah 'Tutup'.

Sebaik sahaja kita mempunyai DataFrame di tempatnya, saya akan membahas beberapa fungsi berguna di perpustakaan panda yang akan membolehkan kita memanipulasi data di DataFrame objek.

def get_data (simbol, tarikh mula, tarikh_ akhir):
panel = data.Pembaca Data (simbol, 'yahoo', tarikh mula, tarikh_ akhir)
df = panel ['Tutup']
mencetak (df.kepala (5))
mencetak (df.ekor (5))
kembali df

Kepala dan Ekor

Baris ketiga dan keempat dapatkan_data mencetak kepala fungsi dan ekor bingkai data.  Saya rasa ini paling berguna dalam proses debug dan visualisasi data, tetapi ia juga dapat digunakan untuk memilih sampel data pertama atau terakhir di DataFrame.  Fungsi kepala dan ekor menarik baris data pertama dan terakhir dari DataFrame.  Parameter integer antara tanda kurung menentukan bilangan baris yang akan dipilih dengan kaedah.

 .loc

The DataFrame loc kaedah menghiris DataFrame mengikut indeks.  Garis kod di bawah memotong df DataFrame mengikut indeks 2017-12-12.  Saya telah memberikan tangkapan skrin hasil di bawah.

cetak df.loc ["2017-12-12"]

loc boleh digunakan sebagai kepingan dua dimensi juga. Parameter pertama adalah baris dan parameter kedua adalah lajur.  Kod di bawah mengembalikan satu nilai yang sama dengan harga penutupan Apple pada 12/12/2014.

cetak df.loc ["2017-12-12", "AAPL"]

The loc kaedah boleh digunakan untuk memotong semua baris dalam lajur atau semua lajur berturut-turut. The : operator digunakan untuk menunjukkan semua.  Baris kod di bawah memilih semua baris dalam lajur untuk harga tutup Google.

cetak df.loc [:, "GOOG"]

.fillna

Adalah biasa, terutama dalam kumpulan data kewangan, mempunyai nilai NaN di dalam anda DataFrame.  Pandas menyediakan fungsi untuk mengisi nilai-nilai ini dengan nilai berangka.  Ini berguna jika anda ingin melakukan beberapa pengiraan pada data yang mungkin miring atau gagal kerana nilai NaN.

The .fillna kaedah akan menggantikan nilai yang ditentukan untuk setiap nilai NaN dalam set data anda.  Garis kod di bawah ini akan mengisi semua NaN di kami DataFrame dengan 0.  Nilai lalai ini dapat diubah untuk nilai yang memenuhi kebutuhan set data yang Anda gunakan dengan memperbarui parameter yang diteruskan ke metode.

df.fillna (0)

Menormalkan Data

Semasa menggunakan pembelajaran mesin atau algoritma analisis kewangan, selalunya berguna untuk menormalkan nilai anda.  Kaedah di bawah adalah pengiraan yang cekap untuk menormalkan data dalam panda DataFrame.  Saya mendorong anda untuk menggunakan kaedah ini kerana kod ini akan berjalan lebih efisien daripada kaedah lain untuk menormalkan dan dapat menunjukkan peningkatan prestasi besar pada set data besar.

.haram adalah kaedah yang serupa dengan .loc tetapi mengambil parameter berdasarkan lokasi daripada parameter berdasarkan tag.  Ia memerlukan indeks berasaskan nol dan bukannya nama lajur dari .loc contoh.  Kod normalisasi di bawah adalah contoh beberapa pengiraan matriks kuat yang dapat dilakukan.  Saya akan melangkau pelajaran aljabar linear, tetapi pada dasarnya garis kod ini akan membahagikan keseluruhan matriks atau DataFrame mengikut nilai pertama setiap siri masa.   Bergantung pada set data anda, anda mungkin menginginkan norma berdasarkan min, maks, atau min.  Norma ini juga dapat dikira dengan mudah menggunakan gaya berdasarkan matriks di bawah.

def normalize_data (df):
pulangkan df / df.ilok [0 ,:]

Memplot Data

Semasa bekerja dengan data, selalunya perlu untuk menggambarkannya secara grafik.  Kaedah plot membolehkan anda membuat grafik dari kumpulan data anda dengan mudah.

Kaedah di bawah menggunakan kaedah kami DataFrame dan memplotnya pada graf garis piawai.  Kaedah mengambil a DataFrame dan tajuk sebagai parameternya.  Baris pertama set kod kapak ke plot dari DataFrame df.  Ini menetapkan tajuk dan saiz fon untuk teks.  Dua baris berikut menetapkan label untuk paksi x dan y.  Baris terakhir kod memanggil kaedah persembahan yang mencetak grafik ke konsol. Saya telah memberikan tangkapan skrin hasil dari plot di bawah.  Ini mewakili harga tutup normal bagi setiap ekuiti dalam jangka masa yang dipilih.

def plot_data (df, tajuk = "Harga saham"):
kapak = df.plot (tajuk = tajuk, ukuran huruf = 2)
kapak.set_xlabel ("Tarikh")
kapak.set_ylabel ("Harga")
plot.tunjuk ()

Pandas adalah perpustakaan manipulasi data yang mantap. Ini dapat digunakan untuk berbagai jenis data dan menyajikan sekumpulan kaedah yang ringkas dan efisien untuk memanipulasi set data anda. Di bawah ini saya telah memberikan kod lengkap dari tutorial supaya anda dapat menyemak dan mengubah untuk memenuhi keperluan anda. Terdapat beberapa kaedah lain yang membantu anda memanipulasi data dan saya mendorong anda untuk menyemak dokumen panda yang disiarkan di halaman rujukan di bawah. NumPy dan MatPlotLib adalah dua perpustakaan lain yang berfungsi dengan baik untuk sains data dan dapat digunakan untuk meningkatkan kekuatan perpustakaan panda.

Kod Penuh

import panda sebagai pd
def plot_selected (df, lajur, start_index, end_index):
plot_data (df.ix [start_index: end_index, lajur])
def get_data (simbol, tarikh mula, tarikh_ akhir):
panel = data.Pembaca Data (simbol, 'yahoo', tarikh mula, tarikh_ akhir)
df = panel ['Tutup']
mencetak (df.kepala (5))
mencetak (df.ekor (5))
cetak df.loc ["2017-12-12"]
cetak df.loc ["2017-12-12", "AAPL"]
cetak df.loc [:, "GOOG"]
df.fillna (0)
kembali df
def normalize_data (df):
pulangkan df / df.ix [0 ,:]
def plot_data (df, tajuk = "Harga saham"):
kapak = df.plot (tajuk = tajuk, ukuran huruf = 2)
kapak.set_xlabel ("Tarikh")
kapak.set_ylabel ("Harga")
plot.tunjuk ()
def tutorial_run ():
#Pilih simbol
simbol = ['SPY', 'AAPL', 'GOOG']
#mendapatkan data
df = get_data (simbol, '2006-01-03', '2017-12-31')
plot_data (df)
jika __nama__ == "__main__":
tutorial_jalankan ()

Rujukan

Laman Utama Pandas
Halaman Wikipedia Pandas
https: // en.wikipedia.org / wiki / Wes_McKinney
Halaman Utama NumFocus

10 Distro Linux Paling Selamat untuk Penggunaan Peribadi
Bukan rahsia lagi bahawa semua orang mencari sistem operasi yang selamat yang menawarkan privasi terkemuka. Sekiranya anda menggunakan sistem yang tid...
Cara mengimbangi Domain dan IP dengan set alat Spyse
Pengintaian, yang tidak lama disebut sebagai pengintaian, merujuk kepada kumpulan kegiatan dan teknik yang berkaitan untuk mengumpulkan maklumat siste...
Cara Menyiapkan Jaringan Chroot Linux
Terutama yang dikhaskan untuk perkhidmatan kritikal, sistem Linux memerlukan pengetahuan peringkat pakar untuk digunakan dan langkah-langkah keselamat...