При попытке понять большой DataFrame в Pandas вам может понадобиться подмножество его по столбцам и строкам. В этом руководстве мы покажем наиболее распространенные варианты использования разделения столбцов вашего DataFrame.
Мы начнем с настройки нашего примера DataFrame, что мы сделаем, запустив следующий код Python в нашей любимой среде (для простоты я использую Anaconda и Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Теперь давайте посмотрим на первые строки нашего Dataframe, используя метод head().
languages.head()
Как видите, это довольно простой DataFrame, который мы будем использовать в качестве примера в этом посте:
| |
язык |
avg_difficulty_level |
avg_salary |
Приложения |
| 0 |
Питон |
3 |
120 |
10 |
| 1 |
до-диез |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Фильтрация одного столбца
Мы начнем с самого простого случая, который состоит в том, чтобы выделить один столбец из нашего набора данных. Выполнение следующей команды создаст объект Series:
По названию/лейблу
languages["language"]
Выход представляет собой серию:
0 Питон
1 до-диез
2 Джаваскрипт
3 PHP
Имя: язык, dtype: объект
type(languages["language"])
pandas.core.series.серия
По индексу
Следующая команда также вернет серию, содержащую первый столбец.
languages.iloc[:,0]
Выбор нескольких столбцов
По имени
При передаче списка столбцов Pandas вернет DataFrame, содержащий часть данных.
languages[["language", "applications"]]
| |
язык |
Приложения |
| 0 |
Питон |
10 |
| 1 |
до-диез |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
По метке (с loc)
df.loc[:,["language","applications"]]
Результат будет аналогичным.
По индексу
Теперь давайте получим несколько столбцов с помощью индекса:
languages.iloc[: ,[0,3]]
| |
язык |
Приложения |
| 0 |
Питон |
10 |
| 1 |
до-диез |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
По условию
В этом случае мы просто покажем столбцы, имя которых соответствует определенному выражению. Мы будем использовать довольно удобный метод фильтра :
languages.filter(axis = 1, like="avg")
Примечания:
- мы также можем фильтровать по определенному регулярному выражению (regex).
- Мы можем применить параметр axis=0 для фильтрации по определенному значению строки.
Отфильтровать определенные строки по условию
Вот довольно простой способ подмножить DataFrame в соответствии со значением строки:
languages[(languages["applications"] > 15)]
У нас есть только один результат:
languages[(languages["applications"] > 15)]
| |
язык |
avg_difficulty_level |
avg_salary |
Приложения |
| 3 |
PHP |
1 |
80 |
20 |