Ваш первый шаг к анализу данных.
С 2010 года, когда pandas впервые получил открытый исходный код, он превратился в красивую и обширную библиотеку для анализа данных. Он часто используется вместе с вычислительными и статистическими библиотеками, такими как NumPy, scikit-learn, matplotlib и т. Д.
В этой статье я расскажу вам о наиболее распространенных функциях pandas, чтобы вы были готовы провести исследовательский анализ данных.
pandas имеет 2 структуры данных, которые многократно используются снова и снова: Series и DataFrame.
Серии
Проще говоря, серия - это одномерный массив элементов, но с дополнительной функцией: существует явный индекс для адресации каждого элемента. Чтобы создать серию, вам нужно передать массив (список, словарь или даже кортеж). Вы также можете передать явный массив для индекса. Индексируя серию, думайте о ней как о хэш-карте, ассоциативном массиве или структуре данных словаря.
>>> import pandas as pd >>> series = pd.Series([1,2,3,4,5,6,7]) >>> series 0 1 1 2 2 3 3 4 4 5 5 6 6 7 dtype: int64 >>> series.index RangeIndex(start=0, stop=7, step=1) >>> #or pass an explicit index >>> series2 = pd.Series([1,2,3,4,5,6,7], index['a','b','c','d','e','f','g']) >>> series2 a 1 b 2 c 3 d 4 e 5 f 6 g 7 dtype: int64
DataFrame
pandas предназначен для работы с табличными или разнородными данными. Это достигается за счет структуры данных DataFrame. Это похоже на таблицу - она содержит строки и столбцы, которые можно индексировать. Существует множество способов создать набор данных, наиболее распространенным из которых является передача словаря. Давай создадим его.
>>> diction = {'name': ['Alex', 'Bob', 'Charlie', 'Jack', 'Melissa'], 'age': [20, 18, 19, 20, 19], 'score': [109, 108, 99, 120, 115]} >>> dataframe1 = pd.DataFrame(diction)
Чтобы проиллюстрировать истинную мощь библиотеки pandas, мы начнем работать с небольшим набором данных из kaggle. Это набор данных об успеваемости учащихся на экзаменах и о том, как на нее влияют экономические, личные и социальные факторы. Загрузите набор данных здесь.
Импорт набора данных
Чтобы импортировать набор данных в формате csv с помощью pandas, мы используем функцию pandas read_csv.
>>> df = pd.read_csv('StudentsPerformance.csv')
Изучение данных
Часто, когда мы работаем с набором данных, нам интересно знать, какие столбцы он содержит и что описывает каждый столбец. Это легко сделать с помощью функций pandas head () и info ().
>>> df.head()
>>> df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 1000 entries, 0 to 999 Data columns (total 8 columns): gender 1000 non-null object race/ethnicity 1000 non-null object parental level of education 1000 non-null object lunch 1000 non-null object test preparation course 1000 non-null object math score 1000 non-null int64 reading score 1000 non-null int64 writing score 1000 non-null int64 dtypes: int64(3), object(5) memory usage: 62.6+ KB
Проверка нулевых значений
Наборы данных часто содержат нулевые значения, которые могут мешать работе во время машинного обучения. Мы можем проверить нулевые значения с помощью функции info () или суммировать по каждому отдельному столбцу, чтобы проверить наличие нулей в столбцах.
>>> df.isnull().sum() gender 0 race/ethnicity 0 parental level of education 0 lunch 0 test preparation course 0 math score 0 reading score 0 writing score 0 dtype: int64
Описание данных
Еще одна очень полезная функция - description (). Это дает 5-кратную сводку данных вместе с некоторой другой полезной статистикой для интерпретации диапазона, в котором будут находиться наши данные.
df.describe()
Задавать вопросы по данным
Основная причина изучения набора данных - это возможность ответить на вопросы. Например, можно было бы узнать, посмотрев на набор данных: «Сколько студентов сдали экзамен по математике?» Или: «Сколько учеников набрали процент выше 80?» С пандами легко ответить на этот вопрос.
>>> # how many students passed the math exam? >>> passing_score = 40 >>> math_stats = df['math score'] >= passing_score >>> print(math_stats.sum()) 960 >>> # how many students scored a percentage above 80? >>> total_marks = df['math score'] + df['reading score'] + df['writing score'] >>> total = 3 >>> total_percentage = (total_marks/total) >>> above_80 = total_percentage >= 80 >>> print(total_percentage[above_80].count()) 198
Сортировка данных по процентам
Теперь, когда мы рассчитали процентное соотношение для всех студентов, мы можем отсортировать данные по их рангу. pandas позволяет сортировать по желаемому столбцу. Для этого давайте добавим еще один столбец с именем «процент» в наш набор данных и отсортируем его.
>>> df['percentage'] = total_percentage >>> df.sort_values(by='percentage', ascending=False)
Подсчет по значениям
Иногда нас может заинтересовать анализ определенного столбца из нашего набора данных. Например, столбец «Уровень образования родителей» содержит 5 уникальных значений по всему столбцу. Мы можем захотеть подсчитать эти значения. Функция pandas value_counts () делает это очень просто.
>>> df['parental level of education'].unique() array(["bachelor's degree", 'some college', "master's degree", "associate's degree", 'high school', 'some high school'], dtype=object) >>> df['parental level of education'].value_counts() some college 226 associate's degree 222 high school 196 some high school 179 bachelor's degree 118 master's degree 59 Name: parental level of education, dtype: int64
Подведение итогов
Здесь я обсудил всего несколько удобных функций, которые постоянно используются во время исследовательского анализа данных. Лучшим источником полного руководства по использованию панд является сама документация!