English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Основные операции с Pandas DataFrame
DataFrame является двумерной структурой данных, то есть данные выстраиваются в таблицу по строкам и столбцам.
Возможные столбцы могут быть различных типов Размеры могут изменяться Маркированные оси (строки и столбцы) Можно выполнять арифметические операции над строками и столбцами
Структура Series такова:
Предположим, что мы создаем DataFrame с данными студентов.
Мы можем рассматривать его как представление данных в виде SQL-таблицы или электронной таблицы.
Можна использовать следующие конструкторы для создания pandas DataFrame-
pandas.DataFrame(data, index, columns, dtype, copy)
Описание параметров:
data: данные принимают различные формы, такие как ndarray, серия, карта, список, dict, константы и другой DataFrame. index: для меток строк, если индекс не передается, индекс результирующего кадра - Optional Default np.arange(n). columns: для меток столбцов, опциональнаяdefault-синтаксис - np.arange(n). Это происходит только в том случае, если индекс не передается. dtype: тип данных каждого столбца. copy: если значение по умолчанию равно False, то этот командный (или любой из его команд) используется для копирования данных.
Can be created with various inputs to create pandas DataFrame-
Lists dict Series Numpy ndarrays Другой DataFrame
В后续ной части этой главы мы увидим, как использовать эти входные данные для создания DataFrame.
Можно создать базовый DataFrame - это Empty Dataframe.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd df = pd.DataFrame() print(df)
Результат выполнения:
Empty DataFrame Columns: [] Index: []
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [1, 2, 3, 4, 5] df = pd.DataFrame(data) print(df)
Результат выполнения:
0 0 1 1 2 2 3 3 4 4 5
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]] df = pd.DataFrame(data, columns=['Name', 'Age']) print(df)
Результат выполнения:
Name Age 0 Alex 10 1 Bob 12 2 Clarke 13
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]] df = pd.DataFrame(data, columns=['Name', 'Age'], dtype=float) print df
Результат выполнения:
Name Age 0 Alex 10.0 1 Bob 12.0 2 Clarke 13.0
Длина всех ndarray должна быть одинаковой. Если передан index, длина индекса должна быть равна длине массива.
Если индекс не передается, то по умолчанию индекс будет равен range(n), где n - это длина массива.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'Age': [28, 34, 29, 42]} df = pd.DataFrame(data) print(df)
Результат выполнения:
Age Name 0 28 Tom 1 34 Jack 2 29 Steve 3 42 Ricky
Мы используем массив для создания DataFrame с индексом.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 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)
Результат выполнения:
Age Name rank1 28 Tom rank2 34 Jack rank3 29 Steve rank4 42 Ricky
Список словарей можно передавать в качестве входных данных для создания DataFrame. По умолчанию, ключи словаря используются в качестве имен столбцов.
Ниже приведен пример того, как создать DataFrame, передавая список словарей.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(data) print(df)
Результат выполнения:
a b c 0 1 2 NaN 1 5 10 20.0
Ниже приведен пример того, как создать DataFrame, передавая список словарей и строковый индекс.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(data, index=['first', 'second']) print(df)
Результат выполнения:
a b c first 1 2 NaN second 5 10 20.0
Ниже приведен пример того, как создать DataFrame, содержащий список словарей, строковый индекс и индекс столбцов.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] # У двух столбцов индекс, значения соответствуют ключам словаря df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b']) # У двух столбцов индекс df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1']) print(df1) print(df2)
Результат выполнения:
#output df1 a b first 1 2 second 5 10 #output df2 a b1 first 1 NaN second 5 NaN
Можно передать словарь последовательностей, чтобы сформировать DataFrame. Индекс результата — это объединение всех переданных индексов последовательностей.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) print(df)
Результат выполнения:
one two a 1.0 1 b 2.0 2 c 3.0 3 d NaN 4
Для первой последовательности метка 'd' не была передана, но результатом является то, что для метки 'd' был добавлен NaN.
Теперь давайте разберемся с выбором, добавлением и удалением столбцов на примере.
Мы выберем столбец из DataFrame, чтобы понять это.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) print(df ['one'])
Результат выполнения:
a 1.0 b 2.0 c 3.0 d NaN Name: one, dtype: float64
Мы рассмотрим, как добавить новый столбец в существующий DataFrame.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) #Добавляем новый столбец, передавая новую последовательность, к существующему DataFrame с метками столбцов print ("Добавляем новый столбец, передавая его как Series:") df['three'] = pd.Series([10,20,30],index=['a','b','c']) print df print ("Используя существующие столбцы в DataFrame, добавляем новый столбец:") df['four'] = df['one'] + df['three'] print(df)
Результат выполнения:
Добавляем новый столбец, передавая его как Series: one two three a 1.0 1 10.0 b 2.0 2 20.0 c 3.0 3 30.0 d NaN 4 NaN Используя существующие столбцы в DataFrame, добавляем новый столбец: one two three four a 1.0 1 10.0 11.0 b 2.0 2 20.0 22.0 c 3.0 3 30.0 33.0 d NaN 4 NaN NaN
Можем удалить или вынуть столбцы; давайте разберемся на примере, как это сделать.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 'three': pd.Series([10, 20, 30], index=['a', 'b', 'c']) df = pd.DataFrame(d) print("Our dataframe is:") print(df) # using del function print("Deleting the first column using del function:") del df['one'] print(df) # using pop function print("Deleting another column using POP function:") df.pop('two') print(df)
Результат выполнения:
Our dataframe is: one three two a 1.0 10.0 1 b 2.0 20.0 2 c 3.0 30.0 3 d NaN NaN 4 Deleting the first column using del function: three two a 10.0 1 b 20.0 2 c 30.0 3 d NaN 4 Deleting another column using POP function: three a 10.0 b 20.0 c 30.0 d NaN
现在,我们将通过示例了解行的选择,添加和删除。让我们从选择的概念开始。
可以通过将行标签传递给loc函数来选择行。
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) print(df.loc['b'])
Результат выполнения:
one 2.0 two 2.0 Name: b, dtype: float64
结果是一系列带有标签作为DataFrame列名称的系列。并且,系列的名称是用来检索它的标签。
可以通过将整数位置传递给iloc函数来选择行。
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) print(df.iloc[2])
Результат выполнения:
one 3.0 two 3.0 Name: c, dtype: float64
可以使用':'运算符选择多行。
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) df = pd.DataFrame(d) print(df[2:4])
Результат выполнения:
one two c 3.0 3 d NaN 4
Использование функции append для добавления новых строк в DataFrame. Эта функция добавляет строки в конец.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b']) df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b']) df = df.append(df2) print(df)
Результат выполнения:
a b 0 1 2 1 3 4 0 5 6 1 7 8
Удаление строк из DataFrame с помощью индексных меток. Если метки повторяются, то удаляются несколько строк.
Если вы заметили, что в вышеупомянутом примере, метки повторяются. Давайте удалим одну метку и увидим, сколько строк будет удалено.
# Filename: pandas.py # Автор: ru.oldtoolbag.com # Импортировать пакет зависимости pandas и дать ему别名 import pandas as pd df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b']) df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b']) df = df.append(df2) # Удалить строки с меткой 0 df = df.drop(0) print(df)
Результат выполнения:
a b 1 3 4 1 7 8
В上面的示例е, были удалены две строки, так как они содержат одинаковые метки 0.