O'rnatish uchun pandasbuyruq satrida quyidagi buyruqni bajaring
Download 0.68 Mb.
|
dilnoza
Oxirgi bobda biz kutubxona bilan tanishdik numpyva u Python-da hisob-kitoblarni sezilarli darajada tezlashtirishi mumkinligini bilib oldik. Va endi biz kutubxonani ko'rib chiqamiz pandasjadval ma'lumotlarini qayta ishlash va tahlil qilish uchun ishlatiladi. numpyUshbu kutubxona ma'lumotlarni qulay saqlash va hisoblash uchun ishlatiladi . O'rnatish uchun pandasbuyruq satrida quyidagi buyruqni bajaring: pip o'rnatish pandalar
import numpy as np import pandas as pd Kutubxona pandasma'lumotlar bilan ishlash uchun ob'ektlarning ikkita sinfini belgilaydi: Series- har qanday turdagi ma'lumotlarning qiymatlarini saqlashi mumkin bo'lgan bir o'lchovli massiv; DataFrameustunlari sinf ob'ektlari bo'lgan ikki o'lchovli massiv (jadval) Series. SeriesSiz shunday sinf ob'ektini yaratishingiz mumkin: s = pd.Series(data, index=index) Bu bo'lishi mumkin data: massiv numpy, lug'at, raqam. Argument indexeksa yorliqlari ro'yxatidan o'tadi. Yorliq raqam bo'lishi mumkin, lekin satr belgilaridan ko'proq foydalaniladi. Agar datamassiv bo'lsa numpy, u indexbilan bir xil uzunlikka ega bo'lishi kerak data. Agar hech qanday argument o'tkazilmasa, u holda ro'yxat [0, ..., len(ma'lumotlar) - 1] indexsukut bo'yicha indexavtomatik ravishda tayinlanadi : s = pd.Series(np.arange(5), index=["a", "b", "c", "d", "e"])
a 0
c 2 d 3 e 4 d turi: int32 0 0,00
2 0,50 3 0,75 4 1,00 d turi: float64 Dasturning chiqishidan ko'rinib turibdiki, Seriesu aslida lug'atning analogidir, chunki raqamli indekslar o'rniga u satrlar ko'rinishidagi teglardan foydalanishi mumkin. Agar datau lug'at tomonidan ko'rsatilgan va indexo'tkazilmagan bo'lsa, unda lug'at kalitlari indeks sifatida ishlatiladi. Agar indexuzatilsa, uning uzunligi lug'at uzunligiga mos kelmasligi mumkin data. Bunday holda, lug'atda tegishli qiymatga ega kalit bo'lmagan indekslar qiymatlarni saqlaydi NaN- kutubxonada ma'lumotlar yo'qligi uchun standart belgi pandas. d = {"a": 10, "b": 20, "c": 30, "g": 40}
a 10,0
c 30,0 d NaN d turi: float64 Agar datau raqam bilan berilgan bo'lsa, indexuni o'tkazish kerak. Elementlar soni dagi Seriesteglar soniga teng bo'ladi indexva qiymatlar quyidagilarga teng bo'ladi data: index = ["a", "b", "c"] print(pd.Series(5, index=index)) Dastur chiqishi: a 5
c 5 dtype: int64 SeriesElementni indeks, bo'limlar, massivlarga o'xshash element-element matematik operatsiyalari bo'yicha olish uchun mavjud numpy. s = pd.Series(np.arange(5), index=["a", "b", "c", "d", "e"]) print("Выбор одного элемента") print(s["a"]) print("Выбор нескольких элементов") print(s[["a", "d"]]) print("Срез") print(s[1:]) print("Поэлементное сложение") print(s + s) Dastur chiqishi: Yagona element tanlash 0 Bir nechta element tanlash a 0 d 3 d turi: int32 Slice b 1 c 2 d 3 e 4 dtype: int32 Elementlar bo‘yicha qo‘shish a 0 b 2 c 4 d 6 e 8 dtype: int32 SeriesSiz indeks sifatida qayd etilgan shart bo'yicha ma'lumotlarni filtrlashni qo'llashingiz mumkin : s = pd.Series(np.arange(5), index=["a", "b", "c", "d", "e"]) print("Фильтрация") print(s[s > 2]) Dastur chiqishi: Filtrlash d 3 e 4 dtype: int32 Ob'ektlar ma'lumotlar to'plami nomi qiymatiga ega Seriesatributga va indekslar nomiga ega nameatributga ega:index.name s = pd.Series(np.arange(5), index=["a", "b", "c", "d", "e"]) s.name = "Данные" s.index.name = "Индекс" print(s) Dastur chiqishi: Indeks
b 1 c 2 d 3 e 4 Nomi: Data, dtype: int32 Sinf ob'ekti DataFrameikki o'lchovli jadval ma'lumotlari bilan ishlaydi. Python lug'atidan shunday yaratish DataFrameeng oson : students_marks_dict = {"student": ["Студент_1", "Студент_2", "Студент_3"], "math": [5, 3, 4], "physics": [4, 5, 5]} students = pd.DataFrame(students_marks_dict) print(students) Dastur chiqishi: talaba matematika fizika 0 Talaba_1 5 4 1 Talaba_2 3 5 2 Talaba_3 4 5 Sinf obyekti DataFrameqator ( index) va ustun ( columns) indekslariga ega: print(students.index) print(students.columns) Dastur chiqishi: RangeIndex(start=0, stop=3, step=1) Indeks(['talaba', 'matematik', 'fizika'], dtype='ob'ekt') Satr bo'yicha indeks standart qiymatga ega. Indeks qiymatlarini atributga ro'yxat yozish orqali almashtirish mumkin index: students.index = ["A", "B", "C"] print(students) Dastur chiqishi: talaba matematika fizika A Talaba_1 5 4 B Talaba_2 3 5 C Talaba_3 4 5 Atribut jadval yozuvlariga string yorlig'i orqali kirish uchun ishlatiladi loc. String yorlig'idan foydalanilganda, tilim operatsiyasi mavjud: print(students.loc["B":]) Dastur chiqishi: talaba matematika fizika B Talaba_2 3 5 C Talaba_3 4 5 Keling, y ustunlari DataFramesinf ob'ektlari ekanligiga ishonch hosil qilaylik Series: print(type(students["student"])) Dastur chiqishi: Odatda, jadval ma'lumotlari fayllarda saqlanadi. Bunday ma'lumotlar to'plami ma'lumotlar to'plami deb ataladi. Ma'lumotlar to'plami fayllari turli formatlarga ega bo'lishi mumkin. PandasCSV, Excel 2007+, SQL, HTML, JSON, clipboard va boshqalar uchun o'qish va yozish operatsiyalarini qo'llab-quvvatlaydi. Turli formatdagi fayllardan ma'lumotlar to'plamini olishning bir necha misollari: csv. Funktsiyadan foydalaniladi read_csv(). Argument filema'lumotlar to'plami fayliga yo'lni o'z ichiga olgan qatordir. DataFrameCSV faylidan ma'lumotlarni yozish uchun to_csv(file).
Jadval ma'lumotlarini saqlashning eng mashhur formatlaridan biri bu CSV (vergul bilan ajratilgan qiymatlar, vergul bilan ajratilgan qiymatlar). Ushbu formatdagi fayllarda ma'lumotlar matn shaklida saqlanadi. Jadval satrlari faylga yangi satrdan yoziladi va ustunlar ma'lum bir belgi, ko'pincha vergul "," yoki nuqtali vergul ";" bilan ajratiladi. Birinchi qator, qoida tariqasida, jadval ustunlarining sarlavhalarini o'z ichiga oladi. Talabalarning test ballari va ba'zi qo'shimcha ma'lumotlarga oid ma'lumotlarga ega CSV faylining bir qismiga misol: "jins", "irq/millat", "ota-onalarning ta'lim darajasi", "tushlik", "imtihonga tayyorgarlik kursi", "matematik ball", "o'qish balli", "yozuv balli" "ayol", "B guruhi"
Talaba ma'lumotlari bilan CSV faylidan ma'lumotlar to'plamini olamiz: import numpy as np
students = pd.read_csv("StudentsPerformance.csv") Olingan ob'ekt studentssinfga tegishli DataFrame. Ma'lumotlar to'plamining birinchi n qatorini olish uchun dan foydalaning head(n). Odatiy bo'lib, birinchi besh qator qaytariladi: print(students.head())
gender irqi/millati ... o'qish balli yozish balli 0 ayol guruhi B ... 72 74 1 ayol guruhi C ... 90 88 2 ayol guruhi B ... 95 93 3 erkak A guruhi ... 57 44 4 erkak guruhi C ... 78 75 [5 qator x 8 ustun] Oxirgi n qatorni olish uchun dan foydalaning tail(n). Odatiy bo'lib, oxirgi besh qator qaytariladi: print(student.tail(3)) Dastur chiqishi: gender irqi/millati ... oʻqish balli yozish balli 997 ayol guruhi C ... 71 65 998 ayol guruhi D ... 78 77 999 ayol guruhi D ... 86 86 [3 qator x 8 ustun] Ma'lumotlar to'plamining bir qismini olish uchun siz bo'lakdan foydalanishingiz mumkin: print(students[10:13]) gender irqi/etnik kelib chiqishi ... o'qish balli yozish balli 10 erkak guruhi C ... 54 52 11 erkak guruhi D ... 52 43 12 ayol B guruhi ... 81 73 [3 qator x 8 ustun] Indeks sifatida siz ma'lumotlarni filtrlash uchun shartlardan foydalanishingiz mumkin. Tayyorlov kursidan o'tgan talabalar uchun matematika fanidan dastlabki beshta test natijalarini tanlaymiz. print(students[students["test preparation course"] == "completed"]["math score"].head()) Dastur chiqishi: 1 69
8 64 13 78 18 46 Ism: matematik ball, dtype: int64 Keling, saralash usulidan foydalangan holda oldingi namuna uchun uchta fan bo'yicha beshta eng yaxshi test natijalarini ko'rsatamiz sort_values(). Standart tartiblash qiymatlarning ortib borish tartibida. Kamaytirish tartibida saralash uchun ascendingqiymat nomli argumentga uzatiladi False. with_course = students[students["test preparation course"] == "completed"] print(with_course[["math score", "reading score", "writing score"]].sort_values(["math score", "reading score", "writing score"], ascending=False).head()) Dastur chiqishi: matematik ball o'qish ball yozish ball 916 100 100 100 149 100 100 93 625 100 97 99 623 100 96 86 114 99 100 100 Saralashda ro'yxatdagi ustunlardagi qiymatlar ketma-ket solishtirildi. Keling, testlar uchun ballar yig'indisi bo'yicha tartiblaymiz. Buning uchun boshqa ustun yarating total_scoreva u bo'yicha tartiblang: with_course = students[students["test preparation course"] == "completed"] students["total score"] = students["math score"] + students["reading score"] + students["writing score"] print(students.sort_values(["total score"], ascending=False).head()) Dastur chiqishi: gender irqi/millati ... yozma ball jami ball 916 erkak guruhi E ... 100 300 458 ayol guruhi E ... 100 300 962 ayol guruhi E ... 100 300 114 ayol E guruhi ... 100 299 179 ayol guruhi D ... 100 297 [5 qator x 9 ustun] Jadvalga ustun qo'shish uchun assign(). Bu usul lambda funksiyasidan foydalanib ustunlar yaratish imkonini beradi. E'tibor bering, bu usul yangi jadvalni qaytaradi va asl jadvalni o'zgartirmaydi. Oldingi misolni quyidagi yordamida qayta yozamiz assign(): scores = students.assign(total_score=lambda x: x["math score"] + x["reading score"] + x["writing score"]) print(scores.sort_values(["total_score"], ascending=False).head()) Dastur chiqishi: gender irqi/millati ... yozma ball jami_score 916 erkak guruhi E ... 100 300 458 ayol guruhi E ... 100 300 962 ayol guruhi E ... 100 300 114 ayol E guruhi ... 100 299 179 ayol D guruhi ... 100 297 Ma'lumotlarni tahlil qilishda ko'pincha yozuvlarni qandaydir atribut bo'yicha guruhlash kerak bo'ladi. Guruhlash operatsiyasini bajarish uchun pandasusul qo'llaniladi groupby(). O'z-o'zidan, ko'rib chiqilayotgan ma'lumotlar to'plami uchun guruhlash kam ma'lumot beradi. count()Shuning uchun guruhlangan yozuvlar sonini aniqlash uchun usuldan foydalanamiz . Test sinovlariga tayyorgarlik kursini (“imtihonga tayyorgarlik kursi” maydoni) tugatgan erkak va qiz talabalar soni (“jins” maydoni) haqida ma’lumotga ega bo‘laylik: print(students.groupby(["gender", "test preparation course"])["writing score"].count()) Dastur chiqishi: gender testiga tayyorgarlik kursi ayol 184 ta yo'q 334 erkak tugatgan 174 yo'q 308 Ismi: irqi/millati, turi: int64 Agar siz umumiy ma'lumotlarni olishga imkon beruvchi operatsiyani bajarishingiz kerak bo'lsa, unda bu operatsiya yig'ish deb ataladi. Yig'ish funktsiyasiga misollar yig'indi, o'rtacha arifmetik, minimal, maksimal va hokazo. Birlashtirish funktsiyasini bir nechta ustunlarga qo'llash uchun usul mos keladi , unda agg()siz kalitlar - ustun nomlari va qiymatlarni kalitlar bilan lug'atdan o'tkazishingiz mumkin. agregatsiya funktsiyalari ro'yxati bo'lishi mumkin. Keling, agregatsiyadan foydalanishni misol bilan ko'rsatamiz. Tayyorgarlik kursini tamomlaganiga qarab, erkak va qiz talabalar uchun matematika fanidan test sinovi uchun o‘rtacha arifmetik va o‘rtacha ballarni aniqlaymiz: agg_functions = {"math score": ["mean", "median"]}
matematikadan oʻrtacha ball oʻrtacha gender testiga tayyorgarlik kursini tamomlagan ayol 67.195652 67.0 yoʻq 61.670659 62.0 erkak tugatgan 72.339080 73.0 yoʻq 66.688312 67.0 pandasKutubxona ma'lumotlarni vizualizatsiya qilish uchun ishlatiladi matplotlib. Uni o'rnatish uchun buyruq satrida quyidagi buyruqni bajaring: pip o'rnatish matplotlib Vizualizatsiyadan foydalanish uchun dasturning yuqori qismiga quyidagi import qatorini qo'shing: import matplotlib.pyplot as plt Keling, matematika testi uchun berilgan ballar bo'yicha talabalar sonining taqsimlanishini ko'rsatadigan gistogramma tuzamiz: plt.hist(students["math score"], label="Тест по математике") plt.xlabel("Баллы за тест") plt.ylabel("Количество студентов") plt.legend() plt.show() Sklearn
Mashina ta’limini o’rganish jarayoni haqida quyidagilarni aytib o’tishimiz mumkin: yetakchi kompaniyalardan biri mashinani o’rganish asosida ular Google Now, Google fotosuratlari va yana boshqalar. Masalan moliyaviy kompaniyalar banklar undan valyuta kursini bashorot qilishda foydalanishlari mumkin, ko’chmas mulk kompaniyalari esa uy narxini va boshqa buyumlarnining sotilish trendi yoki ularga bo’ladigan talablarni oldindan bashorat (прогноз) qilishadi. Biz kompyuterlarga ma’lumotlarni va ma’lumotlarga mos keladigan yorliqlarni taqdim etamiz. Masalan, kompyuterga smartfon bilan oddiy bir televizorni pultini rasmini ko’rsatib qaysi biri smartfon yoki oddiy televizorni pulti ekanligini aniqlash uchun ularni farqlashni o’rganish kerak bo’ladi. Rasmlarni ko’rsatib kompyuterga bu smartfon yoki pult ekanligini ajratib olishiga ruxsat berganimizdan so’ng ya’ni qaysi rasmlarni bitta yorliq bilan ifodalash mumkinligini bilib olsin. Ya’ni ushbu usul “nazorat ostida o’rganish” deb nomlanadi. Valyutalar kursini va uylar savdosini bashorat (прoгноз) qilishda va barcha ehtimollari nazorat ostida o’qitish yordamida amalga oshiriladi, neyron to’rlari nazorat qilinadigan o’qitishning turlaridan biridir. Kompyuterga har xil yana boshqacharoq smartfon bilan pultni rasmlarini ko’rsatadigan bo’lsak lekin qaysi biri smartfon yoki pult ekanligini oldindan aytmaymiz, endi kompyuter shu ikki xil turdagi rasmlarni o’zi tahlil qilib farqlaydi, bu esa nazoratsiz (unsupervised) o’rganish deb ataladi, va ma’lumotlarni kuzatish orqali kompyuter ushbu funksiyalarni saqlaydi, shu qoidalar nazoratsiz o’rganiladigan Mashina ta’limi. Ushbu yondashuv nazorat ostida o’qitish (supervised)larning va nazoratsiz o’rganishni birlashtiradi va bu “yarim nazorat ostidagi o’rganish” deb ham nomlanadi. Kompyuterni harakatlarini o’rganish nuqtai nazardan “mustahkamlashni o’rganish” deb nomlangan mashinada o’qitish usullari mavjud. Masalan: Qo’lyozmadagi raqamlarni tanib olish. Ushbu misol scikit-learn-dan qo'lda yozilgan raqamlarning tasvirlarini tanib olish uchun qanday ishlatilishini ko'rsatadi. (Algoritm 1) ning 8 va 9 qatorlarida raqamlarni aniqlab olish uchun Sklearn ning Download 0.68 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling