Во-первых, давайте разберемся с самой фундаментальной частью панд. Тот, который должен приходить к вам естественным образом, пока вы продолжаете практиковать панды. Два типа данных в pandas. Есть два наиболее часто используемых и основных типа данных, которые поддерживает библиотека pandas.

  1. Ряд
  2. Датафрейм

Серия pandas — это одномерный тип данных. Это означает, что у него только одна ось. Но правильнее было бы сказать, что у него нет оси. Вы можете думать о серии pandas как о типе данных списка. Некоторые из встроенных методов списка применимы и для серии панд. Мы можем создать серию панд, просто используя любой список. В приведенном ниже примере я использую массив NumPy, но вы можете закомментировать 4-ю строку и запустить код. Оба дадут нам тот же результат. В строке 5 вы можете дать название своей серии. В приведенном ниже примере я дал ему имя в виде меток. Но, это имя в значительной степени бесполезно на данный момент. Это потому, что мы вызываем серию, используя имя переменной. Поскольку оси нет, нам больше не требуется отдельная бирка с именем для нашей серии. Посмотрим, как изменится ситуация, когда дело дойдет до второго типа данных pandas.

import numpy as np
import pandas as pd
data = [1,2,3,4,5]
data = np.array([85, 90, 70, 80])
series = pd.Series(data=data,name="marks")
print(series)

Теперь, когда у нас есть понимание серий, давайте углубимся в фреймы данных. Фрейм данных — это тип данных панд, который создается путем объединения одной или нескольких серий. Да, вы можете использовать только одну серию для создания фрейма данных. Фрейм данных — это электронная таблица, которую мы можем использовать в Python. Каждая серия создает столбец из себя. В предыдущем примере мы видели, как мы создали ряд с именами меток. Теперь, когда мы создаем фрейм данных, используя эту серию, мы видим, что присвоенное ему имя теперь является именем нашего столбца. Если имя не было указано, панды автоматически назначают имена столбцов как 0,1,2,3,4… и так далее.

data = np.array([85, 90, 70, 80])
series = pd.Series(data=data,name="marks")
dataframe = pd.DataFrame(data=series)
print(dataframe)

Другой способ создания фрейма данных — использование значений строк. В приведенном ниже примере вы можете заметить, что у нас есть список подсписков. Каждый подсписок содержит все значения строки. Все эти подсписки должны содержать одинаковое количество элементов. Теперь, когда мы создаем фрейм данных, первая строка будет иметь значения в первом подсписке, вторая строка со вторым подсписком и так далее. Во второй строке при создании фрейма данных вы можете удалить часть имен столбцов, панды автоматически назначат 0,1,2,3…..и т. д. в качестве имен столбцов.

data = np.array([ [25, 85], [25, 90], [26, 70], [24, 80]])
dataframe = pd.DataFrame(data=data, columns=["age", "marks"])
print(dataframe)

Вы можете получить значения фрейма данных двумя способами. Либо вызвав его в списке, либо вызвав его как метод. Оба метода дают нам одинаковый результат, но первый метод используется чаще, чем второй по понятным причинам. Вы можете указать имя столбца с помощью переменной.

cname = 'age'
# 1. calling it in a list
dataframe[cname]
# or
dataframe['age']
# 2. calling it in a method
dataframe.age
# Uncomment the next line to get an error
# dataframe.cname

В следующих нескольких примерах я буду использовать набор данных, довольно популярный среди новичков. Винный набор данных от SKLearn. давайте загрузим фрейм данных и сохраним его в переменной с именем df. Большая часть Интернета использует имя переменной df для хранения фреймов данных.

# Load some data
import pandas as pd
from sklearn.datasets import load_wine
wine = load_wine()
df = pd.DataFrame(data=wine.data, columns=wine.feature_names)
df

Давайте теперь выберем несколько столбцов из этого фрейма данных. Мы можем сделать это либо задав имя одного столбца в виде строки, либо в виде списка строк.

# Select the 'alcohol column'
print(df['alcohol'])
print(type(df['alcohol']))

df[['alcohol', 'ash', 'hue']]

Метод LOC

давайте узнаем о методе «loc». Этот метод фрейма данных очень полезен для выборки столбцов с помощью «Имен столбцов». Общий синтаксис этого фрейма данных:
df [начальная строка: конечная строка, начальный столбец: конечный столбец]. Вы также можете выбрать подмножество, используя следующий синтаксис для одного столбца: df[1:100, «column_name»]

df.loc[:, 'alcohol']

df.loc[:, ['alcohol', 'ash', 'hue']]

df.loc[0, 'alcohol']

df.loc[[0, 5, 100], ['alcohol', 'ash', 'hue']]

метод iloc

Давайте теперь изучим другой подобный метод, iloc. I в iloc означает индекс. И это работает так же, как функция loc. Все методы из loc также можно использовать с iloc. Единственное отличие состоит в том, что мы должны обращаться к столбцам, используя их порядковые номера, а не имя столбца.

df.iloc[:, 0]

df.iloc[:, [0, 2, 10]]

df.iloc[:, 0:5]

df.shape
# Output: (178, 13)
a = df.iloc[:, 12]
a

b = df.iloc[:, -1]
b

print( a==b )
print("_"*100)
print(type(a == b))
print('_'*100)
all(a == b)

print(type(df.iloc[0]))
df.iloc[0]

print(type(df.iloc[[0]]))
df.iloc[[0]]

df.iloc[[0, 25, 100]]

df.iloc[[-1, -2, -3, -4, -5]]

df.iloc[0, 0]

df.iloc[[0, 5, 100], [0, 3, 7]]

df.iloc[0:6, 0:5]

Условные фреймы данных

Мы можем получить или создать подмножество нашего фрейма данных с помощью условных операторов. Вы можете написать любой условный оператор, и он будет выполняться для каждой строки или каждого столбца и возвращать логическое значение. Затем мы можем использовать этот логический массив для фильтрации строк со значением «Ложь». То есть те, кто не подчиняется условию.
Чтобы лучше понять это, давайте напишем простое условное выражение. В приведенном ниже примере вы можете заметить, что мы сравниваем все строки из столбца алкоголь и проверяем, превышает ли их значение 14,3. Результатом является серия pandas логических значений. Затем мы можем использовать эти логические значения для выборки строк с условием «Истина».

df['alcohol'] > 14.3

df[df['alcohol'] > 14.3]

df.loc[df['alcohol'] > 14.3, ['alcohol', 'ash', 'hue']]

Вы также можете использовать логические операторы, такие как логическое и, логическое есть, между.

df[(df['alcohol'] > 14.3) & (df['alcohol'] < 14.6)]

df[df['alcohol'].between(14.3, 14.6)]

df[(df['alcohol'] > 14.3) & (df['hue'] > 1.0)]

df[ (df['alcohol'] > 14.5) | (df['hue'] > 1.4) ]

idxmin и idxmax — два очень часто используемых метода, которые возвращают минимальное и максимальное значения столбца соответственно.

df['alcohol'].idxmin()
df['alcohol'].idxmax()
df.iloc[[df['alcohol'].idxmin(), df['alcohol'].idxmax()]]