Pandas - один из инструментов машинного обучения, который используется для очистки и анализа данных. Он имеет функции, которые используются для изучения, очистки, преобразования и визуализации данных.
Теперь давайте разберемся и узнаем больше о пандах-
1. Введение в Pandas
Pandas - это пакет Python с открытым исходным кодом, созданный на основе Numpy, разработанный Уэсом МакКинни . Он используется как один из важнейших инструментов очистки и анализа данных. Он обеспечивает быстрые, гибкие и выразительные структуры данных.
Pandas происходит от термина «Pan el- ta- s», эконометрического термина для наборов данных, включающих наблюдения за несколько периодов времени для те же лица. -источник Википедия
2. Как установить Pandas?
Вы можете установить Pandas с помощью следующих команд:
# To install pandas in terminal or command line use one of the commands pip install pandas # or conda install pandas # To install pandas in jupyter notebook use this command !pip install pandas
3. Как импортировать панд?
import pandas as pd
Используя указанную выше команду, вы можете легко импортировать библиотеку pandas.
4. Структуры данных Pandas
Pandas имеет дело с тремя типами структур данных:
- Серии
- DataFrame
- Панель
а) Серия - это одномерная структура, подобная массиву, с однородными данными. Размер серии неизменен (не может быть изменен), но его значения изменчивы.
б) DataFrame - это двумерная структура, подобная массиву, с разнородными данными. Данные выровнены в табличной форме (форма «Строки и столбцы»). Размер и значения DataFrame изменяемы.
c) Панель представляет собой трехмерную структуру данных с разнородными данными. Панель сложно представить в графическом виде. Но его можно проиллюстрировать как контейнер DataFrame. Размер и значения Panel изменяемы.
Примечание. Series и DataFrame - наиболее широко используемые структуры данных в пандах. Поэтому я буду обсуждать только эти две структуры данных позже.
5. Создание рядов и фреймов данных
Серии :
pandas.Series (data = None, index = None, dtype = None, copy = false)
параметры:
данные: данные принимают различные формы, такие как ndarray, список, константы
index: значения индекса должны быть уникальными и хешируемыми, той же длины, что и данные. По умолчанию np.arrange (n), если индекс не передан.
dtype: dtype предназначен для типа данных. Если None, тип данных будет выведен
copy: копировать входные данные. по умолчанию false
а) Создание серии из ndarray
#import the pandas library and aliasing as pdimport pandas as pd import numpy as np data = np.array(['a','b','c','d']) example_1 = pd.Series(data,index=[0,1,2,3) print example_1 out[1]: 0 a 1 b 2 c 3 d
б) Создание серии из словаря
import pandas as pd import numpy as np data = {'a' : 0., 'b' : 1., 'c' : 2.} s = pd.Series(data) print s out: a 0.0 b 1.0 c 2.0 dtype: float64 Note:Dictionary keys are used to construct index here.
в) Создание серии из скаляра
import pandas as pd import numpy as np s = pd.Series(5, index=[0, 1, 2, 3]) print s out: 0 5 1 5 2 5 3 5 dtype: int64
Фрейм данных:
pandas.DataFrame (data = None, index = None, dtype = None, copy = false)
параметры:
данные: данные принимают различные формы, такие как ndarray, список, константы
index-: значения индекса должны быть уникальными и хешируемыми, той же длины, что и данные. По умолчанию np.arrange (n), если индекс не передан.
dtype: dtype предназначен для типа данных. Если нет, будет выведен тип данных.
copy: копировать входные данные. по умолчанию false
а) Создание DataFrame из списка
Example-1: import pandas as pd data = [1,2,3,4,5] df = pd.DataFrame(data) print df out: 0 0 1 1 2 2 3 3 4 4 5 Example-2- import pandas as pd data = [['Alex',10],['Bob',12],['Clarke',13]] df = pd.DataFrame(data,columns=['Name','Age'],dtype=float) print df out: Name Age 0 Alex 10.0 1 Bob 12.0 2 Clarke 13.0 Note: the dtype parameter changes the type of Age column to floating point.
б) Создайте DataFrame из Dict из ndarrays / Lists
Все ndarrays должны быть одинаковой длины. Если индекс передан, то длина индекса должна быть равна длине массивов.
Если индекс не передается, то по умолчанию индексом будет диапазон (n), где n - длина массива.
Example-1 import pandas as pd data ={'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]} df = pd.DataFrame(data) print df out: Age Name 0 28 Tom 1 34 Jack 2 29 Steve 3 42 Ricky Note: Here,0,1,2,3 are the default index assinged each using the function range(n). Example-2 import pandas as pd data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]} df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4']) print df out: Age Name rank1 28 Tom rank2 34 Jack rank3 29 Steve rank4 42 Ricky
6. Панды: Как читать и писать файлы?
Pandas может читать и записывать любые типы файлов, такие как Excel, CSV и многие другие файлы, это одна из его важнейших функций. Такие методы, как df.read _ * () и df.to _ * (), помогают эффективно работать со всеми типами файлов.
Я буду использовать Iris-dataset для объяснения.
источник: https://www.kaggle.com/uciml/iris
а) Чтение файла .csv
In [1]:import pandas as pd In [2]:data = pd.read_csv("Iris_dataset.csv") In [3]:data.head() out[3]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa
б) Запись файла в формате .xlsx
In [4]:import pandas as pd In [5]:data= pd.read_csv("Iris_dataset.csv") In [6]:type(data) out[6]:pandas.core.frame.DataFrame In [7]:data_csv = data.to_excel('iris_data.xlsx')
Точно так же вы можете читать и записывать и другие файлы.
7. Столбцы и строки DataFrame (.shape) и количество измерений.
a) Функция df.shape в pandas возвращает результат в виде (m, n), где m - количество строк, а n - количество столбцов во фрейме данных.
б) df.ndim возвращает int, представляющий количество осей / измерений массива. Он вернет 1 для серии и 2 для DataFrame.
In [8]:data.shape out[8]:(150,6) In [9]:data.ndim out[9]: 2
8. Предварительный просмотр DataFrame с помощью .head () и .tail ()
a) df.head (n = количество возвращаемых строк) возвращает первые n строк из DataFrame.
б) df.tail (n = количество возвращаемых строк) возвращает последние n строк из DataFrame.
#df.head() In [3]:data.head(4) out[3]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa Note:in head(n) you can cange value of n which shows n no. of rows in output #df.tail() In [4]:data.tail() out[4]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 146 6.7 3.0 5.2 2.3 Iris_virginica 147 6.3 2.5 5.0 1.9 Iris-virginica 148 6.5 3.0 5.2 2.0 Iris-virginica 149 6.2 3.4 5.4 2.3 Iris-virginica 150 5.9 3.0 5.1 1.8 Iris-virginica
9. высокоуровневая статистика с пандами
а) Pandas DataFrame.describe ()
Метод description () используется для вычисления некоторых статистических данных, таких как процентиль, среднее и стандартное числовые значения Series или DataFrame. Он анализирует как числовые, так и объектные серии, а также наборы столбцов DataFrame смешанных типов данных.
In [5]data.describe() out[5]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm count 150.000000 150.000000 150.000000 150.000000 150.000000 mean 75.500000 5.843333 3.054000 3.758667 1.198667 std 43.445368 0.828066 0.433594 1.764420 0.763161 min 1.000000 4.300000 2.000000 1.000000 0.100000 25% 38.250000 5.100000 2.800000 1.600000 0.300000 50% 75.500000 5.800000 3.000000 4.350000 1.300000 75% 112.750000 6.400000 3.300000 5.100000 1.800000 max 150.000000 7.900000 4.400000 6.900000 2.500000 #for one column In [8]:data['SepalLengthCm'].describe() out[8]: count 150.000000 mean 5.843333 std 0.828066 min 4.300000 25% 5.100000 50% 5.800000 75% 6.400000 max 7.900000 Name: SepalLengthCm, dtype: float64
10. Функции .dtypes и .astype () в Pandas
Для проверки типов данных столбцов фрейма данных используется функция .dtypes . Серии имеют только один тип данных, но во фрейме данных могут быть смешанные типы данных.
#for iris_dataset In [1]:data.dtypes out[1]:Id int64 SepalLengthCm float64 SepalWidthCm float64 PetalLengthCm float64 PetalWidthCm float64 Species object dtype: object
Примечание. Любой столбец во фрейме данных, содержащий символ / строку, отображается как тип данных «объект».
Если вы хотите изменить тип данных определенного столбца во фрейме данных, используйте функцию .astype ().
Например, чтобы увидеть столбец «SepalLengthCm» в виде строки
In [2]: data['SepalLengthCm'].astype(str) out[2]: 0 5.1 1 4.9 2 4.7 3 4.6 4 5.0 ... 145 6.7 146 6.3 147 6.5 148 6.2 149 5.9 Name: SepalLengthCm, Length: 150, dtype: object
11. Выбор столбцов и строк в Pandas DataFrame
i) Три основных метода выбора столбцов из фреймов данных в пандах.
a) df.column_name (точечная запись)
In [3]:data.Species.head() out[3]:0 Iris-setosa 1 Iris-setosa 2 Iris-setosa 3 Iris-setosa 4 Iris-setosa Name: Species, dtype: object
б) df [‘column_name’] (с использованием квадратных скобок и имени столбца в виде строки)
In [3]:data['Species'].head() out[3]:0 Iris-setosa 1 Iris-setosa 2 Iris-setosa 3 Iris-setosa 4 Iris-setosa Name: Species, dtype: object
c) data.iloc [0: 0, ‹column_number›] (с использованием числовой индексации и селектора iloc)
In [3]:data.iloc[0:,5].head() out[3]:0 Iris-setosa 1 Iris-setosa 2 Iris-setosa 3 Iris-setosa 4 Iris-setosa Name: Species, dtype: object
ii) Выбор строк
Строки в DataFrame выбираются, как правило, с использованием методов выбора iloc / loc или с использованием логических селекторов (выбор на основе значения другого столбца или переменной).
#selecting rows using iloc/loc Example-1 In [7]:data.iloc[0:5,].head() out[7]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa Example-2 In [8]:data.iloc[4, : ] out[8]:Id 5 SepalLengthCm 5 SepalWidthCm 3.6 PetalLengthCm 1.4 PetalWidthCm 0.2 Species Iris-setosa Name: 4, dtype: object
iii) Выбор одновременно строк и столбцов
#selecting column number 1 and five number of row's values of that column Method-1 In [9]:data.iloc[0:5,1].head() out[9]:0 5.1 1 4.9 2 4.7 3 4.6 4 5.0 Name: SepalLengthCm, dtype: float64 Method-2 In [10]:data.loc[0:5, ['SepalLengthCm']].head() out[10]: SepalLengthCm 0 5.1 1 4.9 2 4.7 3 4.6 4 5.0
12. Фильтрация
In [11]:data[data['Species']=='Iris-virginica'].head() out[11]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 101 6.3 3.3 6.0 2.5 Iris-virginica 102 5.8 2.7 5.1 1.9 Iris-virginica 103 7.1 3.0 5.9 2.1 Iris-virginica 104 6.3 2.9 5.6 1.8 Iris-virginica 105 6.5 3.0 5.8 2.2 Iris-virginica In [12]:data[data['SepalLengthCm']>6.3].head() out[12]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 51 7.0 3.2 4.7 1.4 Iris-versicolor 52 6.4 3.2 4.5 1.5 Iris-versicolor 53 6.9 3.1 4.9 1.5 Iris-versicolor 55 6.5 2.8 4.6 1.5 Iris-versicolor 59 6.6 2.9 4.6 1.3 Iris-versicolor In [12]:data[data['SepalLengthCm']<6.3].head() out[12]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa
13. Управление фреймами данных в пандах
а) Переименование столбцов во фрейме данных
Переименовать столбцы можно легко в Pandas с помощью функции DataFrame rename ().
df.rename (columns = {«old_column_name»: «new_column_name»})
#Renaming one column In [13]:data.rename(columns={'SepalLengthCm':'Sepal_Length'}) out[13]: Id Sepal_Length SepalWidthCm PetalLengthCm PetalWidthCm Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa #Renaming multi-columns In [14]:data.rename(columns={'SepalLengthCm':'Sepal_Length','SepalWidthCm':'Sepal_Width', 'PetalLengthCm':'Petal_Length','PetalWidthCm':'Petal_Width'}) out[13]: Id Sepal_Length Sepal_Width Petal_Length Petal_Width Species 1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa
б) Удаление строк и столбцов во фрейме данных
Pandas использует функцию drop () »для удаления строк и столбцов из DataFrames.
df.drop (имя _или _names, ось = "столбцы" / 1 ИЛИ "строки" / 0)
i) Удаление столбцов из фрейма данных.
#delete the 'Id' column from the dataframe In [15]:data.drop('Id',axis= 1).head() #other method data.drop(columns="Id").head() out[15]: SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 5.1 3.5 1.4 0.2 Iris-setosa 4.9 3.0 1.4 0.2 Iris-setosa 4.7 3.2 1.3 0.2 Iris-setosa 4.6 3.1 1.5 0.2 Iris-setosa 5.0 3.6 1.4 0.2 Iris-setosa #Delete multiple columns from the dataframe In [16]:data.drop(["Id","SepalWidthCm"],axis= 1).head() out[16]: SepalLengthCm PetalLengthCm PetalWidthCm Species 5.1 1.4 0.2 Iris-setosa 4.9 1.4 0.2 Iris-setosa 4.7 1.3 0.2 Iris-setosa 4.6 1.5 0.2 Iris-setosa 5.0 1.4 0.2 Iris-setosa
ii) Чтобы удалить строки из DataFrame с помощью функции drop (), установите для оси значение 0.
# Delete the rows with labels 0,1 In [17]:data.drop([0,1],axis=0).head(3) out[17]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa # Delete the first two rows using iloc selector In[18]:data.iloc[2:,].head(3) out[18]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa
в) Работа с недостающими значениями
Во многих наборах данных отсутствуют значения, панды предоставляют несколько способов справиться с этим.
i) Поиск пропущенных значений
Чтобы обнаружить любые отсутствующие значения во фрейме данных, предоставьте такие функции, как isnull (), isna (). Они оба делают одно и то же.
In [19]:data.isna().head(3) out[19]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species False False False False False False False False False False False False False False False False False False #df.isna() returns the dataframe with boolean values indicating missing values.(True=missing value is present ,False= missing value is not present.)
Примечание. Вы также можете использовать notna (), который является полной противоположностью isna ().
Используя df.isna (). Sum (), вы можете получить количество пропущенных значений в каждом столбце.
In [20]:data.isna().sum() out[20]:Id 0 SepalLengthCm 0 SepalWidthCm 0 PetalLengthCm 0 PetalWidthCm 0 Species 0 dtype: int64
ii) Отбросьте пропущенные значения.
Чтобы удалить строку или столбец с пропущенными значениями, в пандах есть функция dropna ().
df.dropna (axis = 0 или 1, how = "any" или "all")
- ‘Any’: отбрасывать, если отсутствует какое-либо значение
- ‘All’: отбрасывать, если все значения отсутствуют
iii) Замена отсутствующих значений
Чтобы заменить любое отсутствующее значение во фрейме данных, pandas предоставляет функцию fillna ().
14. Вычисление с помощью pandas DataFrame
а) Поэлементные математические операции в DataFrame
Многие операции, такие как сложение, вычитание, умножение, деление и т. Д., Могут выполняться поэлементно в любом фрейме данных следующими способами:
df + λ ( сложение, где λ - любое скалярное значение)
Аналогично, df - λ для вычитания, а df * λ для умножения
Example: #adding 1 element-by-element in Column ="SepalLengthCm" In [21]:data["SepalLengthCm"] + 1 out[21]:0 6.1 1 5.9 2 5.7 3 5.6 4 6.0 ... 145 7.7 146 7.3 147 7.5 148 7.2 149 6.9 Name: SepalLengthCm, Length: 150, dtype: float64 #similarly you can do other operatio
б) Статистические операции в DataFrame
i) count (): количество ненулевых наблюдений
Example: In [23]:data["SepalLengthCm"].count() out[23]:150
ii) sum (): сумма значений
Example: In [24]:data["SepalLengthCm"].sum() out[24]:876.5
iii) mean (): Среднее значение.
Example: In [25]:data["SepalLengthCm"].mean() out[25]:5.843333333333334
Другие важные сатистические функции в пандах: -
mad (): Среднее абсолютное отклонение
median (): арифметическая медиана значений
min (): Минимум
max (): Максимум
mode (): Режим
prod (): произведение значений
std (): стандартное отклонение выборки с поправкой на Бесселя.
var (): несмещенная дисперсия
sem (): стандартная ошибка среднего
skew (): пример асимметрии (3-й момент)
Курт (): Пример эксцесса (4-й момент)
quantile (): квантиль выборки (значение в%)
value_counts (): количество уникальных значений
15. Дополнительные полезные функции в Pandas
а) groupby () - эта функция используется для группировки данных в пандах
Example: In [26]:data.groupby("Species").count() out[26]: Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species Iris-setosa 50 50 50 50 50 Iris-versicolor 50 50 50 50 50 Iris-virginica 50 50 50 50 50
Это некоторые важные функции, которые широко используются в машинном обучении. Вы можете ошеломить количеством функций pandas, поэтому придерживайтесь наиболее часто используемых функций pandas, чтобы лучше понять эту прекрасную библиотеку и получить от нее максимальную отдачу.
Удачного кодирования 😃