Приятелско запознаване с анализа на данните в Python

С течение на годините използването на python за наука за данни нараства невероятно и продължава да расте ежедневно.


Науката за данни е огромно поле за изследване с много подполета, от които анализът на данни е несъмнено един от най-важните от всички тези области и независимо от нивото на умения в науката за данни, става все по-важно да се разбере или имат поне основни познания за него.

Какво е анализ на данните?

Анализът на данните е изчистване и трансформиране на голямо количество неструктурирани или неорганизирани данни, с цел генериране на ключова информация и информация за тези данни, които биха помогнали при вземането на информирани решения.

Има различни инструменти, използвани за анализ на данни, Python, Microsoft Excel, Tableau, SaS и т.н., но в тази статия ще се съсредоточим върху това как се прави анализ на данните в python. По-конкретно как се прави с питон библиотека, наречена Пандите.

Какво е Панда?

Pandas е библиотека с отворен код Python, използвана за манипулиране на данни и разбъркване. Той е бърз и високоефективен и разполага с инструменти за зареждане на няколко вида данни в паметта. Може да се използва за преформулиране, етикетиране на срезове, индекс или дори групиране на няколко форми на данни.

Структури на данните в пандите

В Пандите има 3 структури от данни, а именно;

  • серия
  • DataFrame
  • панел

Най-добрият начин да разграничите трите от тях е да видите, че единият съдържа няколко стека от другия. Така че DataFrame е стек от серии, а Panel е стек от DataFrames.

Серията е едномерен масив

Стек от няколко серии прави двуизмерен DataFrame

Стек от няколко DataFrames прави триизмерен панел

Структурата на данните, с която бихме работили най-много, е двуизмерната DataFrame, която също може да бъде начинът на представяне по подразбиране за някои набори от данни, на които може да се натъкнем.

Анализ на данните в Pandas

За тази статия не е необходима инсталация. Ще използваме инструмент, наречен colaboratory създаден от Google. Това е онлайн среда на python за анализ на данни, машинно обучение и AI. Това е просто облачна базирана тетрадка Jupyter, която се предлага предварително инсталирана с почти всеки пакет python, който ще ви е необходим като учен с данни.

Сега се насочете към https://colab.research.google.com/notebooks/intro.ipynb. Трябва да видите по-долу.

В горната лява навигация щракнете върху опцията за файл и щракнете върху опцията „нов бележник“. Ще видите нова страница за тетрадки на Юпитер, заредена във вашия браузър. Първото нещо, което трябва да направим, е да импортираме панди в нашата работна среда. Можем да направим това, като пуснем следния код;

импортиране на панди като pd

За тази статия ще използваме набор от данни за цените на жилищата за нашия анализ на данни. Наборът от данни може да бъде намерен тук. Първото нещо, което бихме искали да направим, е да заредим този набор от данни в нашата среда.

Можем да направим това със следния код в нова клетка;

df = pd.read_csv („https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &токен = 6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ‘, sep =’, ‘)

.Read_csv се използва, когато искаме да прочетем CSV файл и предадохме sep свойство, за да покажем, че CSV файлът е разделен със запетая.

Трябва също да отбележим, че натовареният ни CSV файл се съхранява в променлива df .

Не е необходимо да използваме функцията print () в Jupyter Notebook. Просто можем просто да напишем име на променлива в нашата клетка и Jupyter Notebook ще я разпечата за нас.

Можем да изпробваме това, като напишем df в нова клетка и я изпълним, тя ще разпечата всички данни в нашия набор от данни като DataFrame за нас.

Но не винаги искаме да виждаме всички данни, понякога просто искаме да видим първите няколко данни и техните имена на колони. Можем да използваме функцията df.head () за отпечатване на първите пет колони и df.tail () за отпечатване на последните пет. Резултатът от който и да е от двамата би изглеждал като такъв;

Бихме искали да проверим за връзката между тези няколко реда и колони с данни. Функцията .describe () прави точно това за нас.

 Изпълнението на df.describe () дава следния изход;

Веднага можем да видим, че .describe () дава средното, стандартното отклонение, минималните и максималните стойности и процентилите на всяка колона в DataFrame. Това е много полезно особено.

Можем също да проверим формата на нашата 2D DataFrame, за да разберем колко редове и колони има. Можем да направим това с помощта на df.shape, който връща кортеж във формата (редове, колони).

Можем също да проверим имената на всички колони в нашата DataFrame, използвайки df.column.

Ами ако искаме да изберем само една колона и да върнем всички данни в нея? Това е направено по начин, подобен на прерязването през речник. Въведете следния код в нова клетка и я стартирайте

df [‘цена’]

Горният код връща ценовата колона, можем да продължим, като го запишем в нова променлива като такава

цена = df [‘цена’]

Сега можем да извършим всяко друго действие, което може да се извърши на DataFrame върху нашата променлива на цената, тъй като това е само подмножество от действителна DataFrame. Можем да правим неща като df.head (), df.shape и т.н…

Можем също така да избираме няколко колони, като предаваме списък с имена на колони в df като такъв

data = df [[‘цена’, ‘спални’]]

Горното избира колони с имена „цена“ и „спални“, ако напишем data.head () в нова клетка, ще имаме следното

Горепосоченият начин на рязане на колони връща всички елементи от реда в тази колона, а ако искаме да върнем подмножество от редове и подмножество от колони от нашия набор данни? Това може да стане с помощта на .iloc и се индексира по начин, подобен на списъците с питони. Така че можем да направим нещо подобно

df.iloc [50:, 3]

Което връща 3-та колона от 50-ти ред до края. Това е доста спретнато и точно същото като нарязването на списъци в python.

Нека да направим някои наистина интересни неща, нашият набор от данни за цените на жилищата има колона, която ни казва цената на къщата, а друга колона ни показва броя на спалните, които конкретната къща има. Цената на жилищата е непрекъсната стойност, така че е възможно да нямаме две къщи, които имат една и съща цена. Но броят на спалните е някак дискретен, така че можем да имаме няколко къщи с две, три, четири спални и т.н..

Ами ако искаме да получим всички къщи с еднакъв брой спални и да намерим средната цена на всяка отделна спалня? Това е сравнително лесно да се направи в пандите, може да се направи като такова;

df.groupby (‘спални’) [‘цена’] .mean ()

Горните първи групират DataFrame от наборите от данни с идентичен номер в спалнята, използвайки функцията df.groupby (), след което ние го казваме, за да ни даде просто колоната в спалнята и използваме .mean () функцията, за да намерим средното значение за всяка къща в набора от данни.

Ами ако искаме да визуализираме горното? Бихме искали да можем да проверим как варира средната цена на всеки отделен номер в спалнята? Просто трябва да веригираме предишния код към .plot () функция като такава;

df.groupby (‘спални’) [‘цена’] .mean (). plot ()

Ще имаме резултат, който изглежда като такъв;

Горното ни показва някои тенденции в данните. На хоризонталната ос имаме отделен брой спални (Забележете, че повече от една къща може да има X брой спални), На вертикалната ос имаме средната стойност на цените по отношение на съответния брой спални на хоризонталната ос. Вече можем веднага да забележим, че къщите, които имат между 5 и 10 спални, струват много повече от къщите с 3 спални. Също така ще стане очевидно, че къщите с около 7 или 8 спални струват много повече от тези с 15, 20 или дори 30 стаи.

Информацията като горната е, защо анализът на данни е много важен, ние можем да извлечем полезна представа от данните, които не са веднага или съвсем невъзможни да се забележат без анализ.

Липсва информация

Да допуснем, че вземам проучване, което се състои от поредица от въпроси. Споделям линк към анкетата с хиляди хора, за да могат да дадат своите отзиви. Крайната ми цел е да стартирам анализ на данните на тези данни, за да мога да получа някои ключови данни от тези данни.

Сега много може да се обърка, някои анкетьори може да се чувстват неудобно да отговорят на някои от моите въпроси и да го оставят празно. Много хора биха могли да направят същото за няколко части от въпросите ми. Това може да не се счита за проблем, но представете си, ако бих събирал числови данни в моето проучване и част от анализа изискваше да получа или сумата, средната или някаква друга аритметична операция. Няколко липсващи стойности биха довели до много неточности в моя анализ, трябва да измисля начин да намеря и заместя тези липсващи стойности с някои стойности, които могат да бъдат близък заместител на тях.

Pandas ни предоставят функция за намиране на липсващи стойности в DataFrame, наречена isnull ().

Функцията isnull () може да се използва като такава;

df.isnull ()

Това връща DataFrame от булеви данни, който ни казва дали първоначално присъстващите данни наистина са липсвали или грешно липсват. Резултатът ще изглежда като такъв;


Нуждаем се от начин да можем да заменим всички тези липсващи стойности, най-често изборът на липсващи стойности може да се приеме като нула. Понякога тя може да бъде приета като средна стойност на всички други данни или може би като средна стойност на данните около нея, в зависимост от данните учен и случая на използване на данните, които се анализират.

За да запълним всички липсващи стойности в DataFrame, използваме функцията .fillna (), използвана като такава;

df.fillna (0)

В горното попълваме всички празни данни със стойност нула. То може да бъде и всеки друг номер, който ние определяме да бъде.

Важността на данните не може да бъде преодоляна, тя ни помага да получим отговори направо от самите си данни !. Според анализа на данните е новият петрол за цифрови икономики.

Всички примери в тази статия могат да бъдат намерени тук.

За да научите повече задълбочено, разгледайте Анализ на данни с онлайн курс Python и Pandas.

ЕТИКЕТИ:

  • Питон

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map