- Какво представлява пакетът Pandas
- Инсталиране и започване
- Зареждане на данни от CSV файлове в Pandas DataFrame
- Какво е DataFrame и как работи
- Нарязване на рамки за данни
- Математически операции над DataFrame
Това изглежда много за покриване. Нека започнем сега.
Какво представлява пакетът Python Pandas?
Според началната страница на Pandas: pandas е библиотека с лиценз BSD с отворен код, предоставяща високоефективни, лесни за използване структури от данни и инструменти за анализ на данни за езика за програмиране Python.
Едно от най-страхотните неща за Pandas е, че прави четенето на данни от често срещани формати на данни като CSV, SQL и т.н. много лесно, което го прави еднакво използваем в приложения от производствен клас или само в някои демонстрационни приложения.
Инсталирайте Python Pandas
Само бележка преди стартиране на инсталационния процес, ние използваме виртуална среда за този урок, който направихме със следната команда:
python -m virtualenv pandasизходни панди / кош / активиране
След като виртуалната среда е активна, можем да инсталираме библиотека за панди във виртуалната среда, така че примери, които създаваме след това, да могат да бъдат изпълнени:
pip инсталирайте пандиИли можем да използваме Conda, за да инсталираме този пакет със следната команда:
conda инсталирайте пандиВиждаме нещо подобно, когато изпълняваме горната команда:
След като инсталацията завърши с Conda, ще можем да използваме пакета в нашите Python скриптове като:
импортирайте панди като pdНека започнем да използваме Pandas в нашите скриптове сега.
Четене на CSV файл с Pandas DataFrames
Четенето на CSV файл е лесно с Pandas. За демонстрация създадохме малък CSV файл със следното съдържание:
Име, RollNo, дата на приемане, спешен контактШубам, 1,20-05-2012,9988776655
Гаган, 2,20-05-2009,8364517829
Ошима, 3,20-05-2003,5454223344
Vyom, 4,20-05-2009,1223344556
Анкур, 5,20-05-1999,9988776655
Vinod, 6,20-05-1999,9988776655
Випин, 7,20-05-2002,9988776655
Ронак, 8,20-05-2007,1223344556
DJ, 9,20-05-2014,9988776655
VJ, 10,20-05-2015,9988776655
Запазете този файл в същата директория като на скрипта на Python. След като файлът присъства, добавете следния кодов фрагмент във файл на Python:
импортирайте панди като pdученици = pd.read_csv ("ученици.csv ")
ученици.глава()
След като стартираме горния кодов фрагмент, ще видим следния изход:
Функцията head () в Pandas може да се използва за показване на извадка от данни, присъстващи в DataFrame. Изчакайте, DataFrame? Ще проучим много повече за DataFrame в следващия раздел, но просто ще разберем, че DataFrame е n-измерна структура от данни, която може да се използва за задържане и анализ или сложни операции над набор от данни.
Също така можем да видим колко редове и колони имат текущите данни:
ученици.формаСлед като стартираме горния кодов фрагмент, ще видим следния изход:
Имайте предвид, че Pandas също отчитат броя на редовете, започващи от 0.
Възможно е да получите само колона в списък с Pandas. Това може да стане с помощта на индексиране в Пандас. Нека разгледаме кратък кодов фрагмент за същото:
student_names = students ['Name']имена на ученици
След като стартираме горния кодов фрагмент, ще видим следния изход:
Но това не прилича на списък, нали? Е, трябва изрично да извикаме функция, която да преобразува този обект в списък:
student_names = имена на студенти.tolist ()имена на ученици
След като стартираме горния кодов фрагмент, ще видим следния изход:
Само за допълнителна информация можем да се уверим, че всеки елемент в списъка е уникален и избираме само непразни елементи, като добавяме няколко прости проверки като:
student_names = students ['Name'].dropna ().единствен по рода си().tolist ()В нашия случай изходът няма да се промени, тъй като списъкът вече не съдържа никакви фал-стойности.
Също така можем да направим DataFrame със сурови данни и да предадем имената на колоните заедно с него, както е показано в следния кодов фрагмент:
my_data = pd.DataFrame ([
[1, „Чан“],
[2, „Смит“],
[3, „Уинслет“]
],
колони = ["Ранг", "Фамилия"]
)
my_data
След като стартираме горния кодов фрагмент, ще видим следния изход:
Нарязване на рамки за данни
Разбиването на DataFrames за извличане само на избраните редове и колони е важна функционалност, за да се внимава към необходимите части от данни, които трябва да използваме. За това Pandas ни позволява да нарязваме DataFrame, когато и когато е необходимо, с изявления като:
- iloc [: 4 ,:] - избира първите 4 реда и всички колони за тези редове.
- iloc [:,:] - избира се пълният DataFrame
- iloc [5:, 5:] - редове от позиция 5 нататък и колони от позиция 5 нататък.
- iloc [:, 0] - първата колона и всички редове за колоната.
- iloc [9 ,:] - 10-ти ред и всички колони за този ред.
В предишния раздел вече видяхме индексиране и нарязване с имена на колони вместо индексите. Възможно е също така да се смесва нарязването с индексни номера и имена на колони. Нека разгледаме прост кодов фрагмент:
ученици.loc [: 5, 'Име']След като стартираме горния кодов фрагмент, ще видим следния изход:
Възможно е да се посочат повече от една колона:
ученици.loc [: 5, ['Name', 'Emergency Contact']]След като стартираме горния кодов фрагмент, ще видим следния изход:
Структура на серийните данни в Pandas
Подобно на Pandas (което е многомерна структура от данни), Series е едномерна структура на данни в Pandas. Когато извличаме една колона от DataFrame, всъщност работим със серия:
тип (ученици [„Име“])След като стартираме горния кодов фрагмент, ще видим следния изход:
Можем да изградим и наша собствена Серия, ето кодов фрагмент за същото:
серия = pd.Серия (['Shubham', 3.7])серия
След като стартираме горния кодов фрагмент, ще видим следния изход:
Както става ясно от примера по-горе, серия може да съдържа множество типове данни и за една и съща колона.
Булеви филтри в Pandas DataFrame
Едно от хубавите неща в Pandas е как се извлича данни от DataFrame въз основа на условие. Подобно на извличането на ученици само когато броят на номерата е по-голям от 6
roll_filter = ученици ['RollNo']> 6ролков_филтър
След като стартираме горния кодов фрагмент, ще видим следния изход:
Е, не това очаквахме. Въпреки че изходът е съвсем ясен за това кои редове отговарят на филтъра, който сме предоставили, но все още нямаме точните редове, които са удовлетворили този филтър. Оказва се, че можем да използваме филтри като индекси на DataFrame както и:
студенти [roll_filter]След като стартираме горния кодов фрагмент, ще видим следния изход:
Възможно е да се използват множество условия във филтър, така че данните да могат да бъдат филтрирани в един кратък филтър, като:
next_filter = (ученици ['RollNo']> 6) & (ученици ['Име']> 'S')ученици [следващ_филтър]
След като стартираме горния кодов фрагмент, ще видим следния изход:
Изчислителна медиана
В DataFrame можем да изчислим и много математически функции. Ще дадем добър пример за изчисляване на медианата. Медианата ще бъде изчислена за дата, а не само за числа. Нека разгледаме кратък кодов фрагмент за същото:
дати = студенти ['Дата на приема'].astype ('datetime64 [ns]').квантил (.5)дати
След като стартираме горния кодов фрагмент, ще видим следния изход:
Постигнахме това, като първо индексирахме колоната с дата, която имаме, и след това предоставихме тип данни на колоната, така че Pandas да може да я изведе правилно, когато прилага функцията на квантила за изчисляване на средната дата.
Заключение
В този урок разгледахме различни аспекти на библиотеката за обработка на Pandas, която можем да използваме с Python за събиране на данни от различни източници в структура от данни на DataFrame, която ни позволява да работим сложно с набор от данни. Също така ни позволява да получим подмножество от данни, върху които искаме да работим за момент, и предоставя много математически операции.
Моля, споделете отзивите си за урока в Twitter с @sbmaggarwal и @LinuxHint.