O'rnatish uchun pandasbuyruq satrida quyidagi buyruqni bajaring


Download 0.68 Mb.
bet1/44
Sana15.06.2023
Hajmi0.68 Mb.
#1486227
  1   2   3   4   5   6   7   8   9   ...   44
Bog'liq
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
Barcha misollar kutubxonalar quyidagi tarzda import qilinganligini numpytaxmin qiladi:pandas

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"])
print(s)
print()
s = pd.Series(np.linspace(0, 1, 5))
print(s)
Dastur chiqishi:

a 0
b 1


c 2
d 3
e 4
d turi: int32

0 0,00
1 0,25


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}
print(pd.Series(d))
print()
print(pd.Series(d, index=["a", "b", "c", "d"]))
a 10
b 20
c 30
g 40
d turi: int64

a 10,0
b 20,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
b 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
a 0


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).
Excel. Funktsiyadan foydalaniladi read_excel(). DataFrameExcel faylidan ma'lumotlarni yozish uchun dan foydalaning to_excel().
JSON. Funktsiyadan foydalaniladi read_json(). JSON dan ma'lumotlarni yozish uchun DataFramedan foydalaning to_json().
Boshqa fayl formatlari bilan ishlash uchun pandasko'rib chiqilganlarga o'xshash ishlaydigan funktsiyalar mavjud. Ularni hujjatlarda topish mumkin.

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"
, "bakalavr darajasi", "standart", "yo'q", "72", "72", "74" "
ayol", "C guruhi", "ba'zi kollejlar", "standart", "tugallangan", "69", "90", "88"
Keyingi ish uchun ushbu faylni ma'lumotlar to'plami bilan yuklab oling.

Talaba ma'lumotlari bilan CSV faylidan ma'lumotlar to'plamini olamiz:

import numpy as np
import pandas as pd

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())
Dastur chiqishi:

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
6 88


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"]}
print(students.groupby(["gender", "test preparation course"]).agg(agg_functions))
Dastur chiqishi:

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’limi, kompyuterni huddi insonlar kabi avvalgi tajribalardan hulosa (algoritm moduli yaratib) chiqargan holda masalalarga yechim taklif qilish yoki mustaqil qaror chiqarishga imkon beruvchi Suni’y intellekt ilovalaridan biri hisoblanadi. Mashina ta’limi tushunchasi birinchi marta 1860-yillarda ishlatila boshlangan, 20 yil avval esa u har bir sohada – fanlar aro – ishlatila boshladi. Unda ehtimollar nazariyasi, statistika va boshqalar mavjud. Kompyuterning texnikasi yangilanishi bilan hisoblash tezligi o’sishda davom etmoqda. Yaqin kelajakda bu bizning hayotimizda muhim ahamiyat kasb eta boshlaydi.


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:
  1   2   3   4   5   6   7   8   9   ...   44




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling