В предыдущих частях серии «Питон для науки о данных» мы рассматривали:
Часть 1: Основные встроенные функции в Python, такие как функции, типы данных, дата / время, отображение, уменьшение, фильтрация, лямбда-функции и т. Д.
Часть 2: Numpy библиотека для создания, доступа и управления массивами
В этой статье мы рассмотрим наиболее широко используемую библиотеку для анализа данных - Pandas. Как оно получило название? Название Панды происходит отСковородаэльдата. Данные панели включают наблюдения за несколькими периодами времени для одних и тех же людей.
Pandas предоставляют простые в использовании структуры данных и инструменты анализа данных для создания и управления наборами данных. Мы будем смотреть на следующие функции в Pandas:
Как всегда, первым шагом является импорт библиотеки. Давайте импортируем как панды, так и библиотеку.
import pandas as pd
import numpy as np
Серия - это одномерная структура данных, которая может содержать любой тип данных, например целые числа и строки. Это похоже на список в Python.
Во-первых, давайте создадим список
name = ['Rohan','Joseph','Rohit']
name
Результат: [‘Рохан’, ‘Джозеф’, ‘Рохит’]
Теперь давайте преобразуем этот же список в серию Pandas.
name = pd.Series(name)
name
Выход :
0 Рохан
1 Иосиф
2 Рохит
dtype: объект
Мы можем наблюдать, что ряд Панд показывает индекс вместе со значением в каждой позиции. Точно так же давайте создадим словарь и преобразуем его в серию Pandas.
sport = {'cricket' : 'India',
'soccer' : 'UK',
'Football' : 'USA'}sport = pd.Series(sport)
sport
Выход :
крикет Индия
футбол Великобритания
Футбол США
dtype: объект
«Ключи» словаря становятся индексом в серии, а «значения» словаря остаются значениями серии. Давайте разберемся в этом дальше, обратившись к серии Pandas.
Давайте продолжим с той же серией «Спорт», созданной выше. Давайте перейдем к третьему значению в серии
sport.iloc[2]
Выход: "США"
«Iloc» используется для выбора значения на основе целочисленного расположения значения. Теперь давайте получим доступ к тому же значению, используя индекс значения.
sport.loc['Football']
Выход: "США"
Отлично, давайте подведем итоги в серии
a = pd.Series([1,2,3])
np.sum(a) #np sum function is a faster than the in-built function
Выход: 6
Добавить данные в существующую серию.
a = pd.Series([1,2,3])
a.loc[‘City’] = ‘Delhi’
Выход :
0 1
1 2
2 3
Город Дели
dtype: объект
Давайте создадим серию с несколькими значениями, имеющими один и тот же индекс.
b = pd.Series([‘a’,’b’,’c’,’d’],index=[‘e’,’e’,’e’,’e’])
b
Выход :
э
е б
е с
е д
dtype: объект
Dataframe - это двумерная структура данных со столбцами разных типов данных (строка, целое число, дата и т. Д.).
Давайте создадим фрейм данных в Pandas. Мы создаем набор данных с тремя столбцами - Имя, Профессия и возраст.
df1 = pd.DataFrame([{'Name' : 'John', 'Occupation' : 'Data Scientist', 'Age' : 25},{'Name' : 'David', 'Occupation' : 'Analyst', 'Age' : 28},{'Name' : 'Mark', 'Occupation' : 'Teacher', 'Age' : 30}],index=['1','2','3'] )df1
Выход :
Теперь давайте создадим фрейм данных, добавив две серии.
s1 = pd.Series({'Name' : 'Rohan',
'Age':'25'})
s2 = pd.Series({'Name' : 'Rohit',
'Age' : 28})]
df1 = pd.DataFrame([s1,s2],index=['1','2'])
df1
Выход :
Давайте посмотрим, как читать CSV-файл.
iris = pd.read_csv('C:\\Users\\rohan\\Documents\\Analytics\\Data\\iris.csv')
Давайте посмотрим на верхние 5 строк файла.
iris.head()
Выход :
Сохраните файл обратно в локальный каталог.
iris.to_csv('iris2.csv')
Проверьте индекс набора данных iris, импортированного на предыдущем шаге.
iris.index.values
Выход :
Теперь измените индекс на название вида. Столбец «Имя» будет отображаться как индекс и заменяет предыдущий индекс.
b = iris.set_index('Name')
b.head()
Выход :
Чтобы вернуться к предыдущему индексу, просто сбросьте индекс следующим образом.
c = b.reset_index()
c.index.values
Выход :
Давайте снова импортируем данные радужной оболочки и объединяем с ними другой набор данных.
df1 = pd.read_csv('iris.csv')
df1.head()
Выход :
Создайте новый фрейм данных, чтобы объединиться с ним.
df2 = pd.DataFrame([{'Name' : 'setosa', 'Species' : 'Species 1'},
{'Name':'versicolor','Species':'Species 2'},
{'Name':'virginica','Species':'Species 3'}])
df2
Выход :
Объединить два вышеупомянутых набора данныхв столбце Имявыполняявнутреннее соединение,
df3 = pd.merge(df1,df2,how='inner',left_on='Name',right_on='Name')
df3.head()
Выход :
Давайте соберем несколько столбцов в наборе данных iris. Во-первых, давайте найдем среднюю длину чашелистика для каждого вида.
df1.groupby('Name')['SepalLength'].mean()
Выход :
Теперь давайте найдем среднее значение всех числовых столбцов по видам.
df1.groupby('Name')[['SepalLength','SepalWidth','PetalLength','PetalWidth']].mean()
Выход :
Вместо того, чтобы находить среднее значение всех столбцов; давайте усредним один столбец (Sepal Length) и суммируем другой столбец (Sepal Width)
a=df1.groupby('Name').agg({'SepalLength':'mean','SepalWidth':'sum'})
a
Выход :
Давайте переименуем столбцы.
a.rename(columns={'SepalLength':'Avg_SepalLength','SepalWidth':'Sum_SepalWidth'})
Выход :
Еще раз, давайте импортируем набор данных iris и выполним операции для подмножества набора данных. Во-первых, давайте подгруппируем данные, у которых длина чашелистика больше 7 см.
iris = pd.read_csv(‘iris.csv’) #import file
a = iris[(iris.SepalLength>7)]
a.head()
Выход :
Теперь давайте подгруппируем данные на основе двух условий.
b = iris[(iris.SepalLength>5) & (iris.PetalLength>6)]
b.head()
Выход :
Подмножество данных путем фильтрации по столбцу «Имя».
c = iris[iris['Name']=='versicolor']
c.head()
Отфильтруйте снова по столбцу имени, но по двум именам.
d = iris[iris['Name'].isin(['virginica','versicolor'])]
d.head()
Выход :
В этой статье мы увидели наиболее часто используемые функции в Pandas, которые используются в науке о данных, хотя есть и другие полезные функции, такие как широковещание, сводные таблицы, мультииндексация и визуализация. в следующая часть В этой серии мы продолжим наше путешествие, рассмотрев, как мы можем комбинировать Pandas с другими функциями для манипулирования данными.
Подключиться LinkedIn и проверьте Github (ниже) для полной тетради.