Pandas Cheat Sheet за Data Science в Python

⚡ Умно обобщение

Шпаргалките на Pandas събират най-използваните команди на библиотеката на една страница. Този справочник ги групира по задача: инсталиране, изграждане на серии и рамки с данни, импортиране на файлове, избиране на редове, почистване на данни, прилагане на функции и експортиране на резултати.

  • 🔘 Две структури: Серията съдържа едно етикетирано измерение, докато DataFrame съдържа две със смесени типове колони.
  • ☑️ Импортирайте каквото и да е: read_csv, read_excel, read_sql, read_json и read_html зареждат файлове в DataFrame.
  • Прецизен подбор: loc избира по етикет, iloc по позиция, а булевите маски филтрират редове по условие.
  • 🧪 Почиства надеждно: isnull, dropna, fillna, drop_duplicates и replace обработват пропуски и повтарящи се записи.
  • 🛠️ Бърза проверка: форма, информация, типове данни и описание, обобщаване на структурата и статистическите данни преди началото на анализа.
  • ⚠️ Бележка към версията: pandas 3.0 активира Copy-on-Write по подразбиране, така че верижното присвояване поражда грешка.

Pandas Cheat Sheet за Data Science в Python

Какво е шпаргалка за Панда?

Библиотеката Pandas предлага стотици функции, но само малка част от тях се появява в ежедневната работа. Шпаргалка за панди е едностраничен справочник, в който са изброени тези команди, групирани по задачата, която изпълняват.

Той обхваща структурите Series и DataFrame, импортирането и експортирането на файлове, избирането и подреждането на данни, почистването на стойности и прилагането на функции. Всеки раздел по-долу съчетава кратко обяснение с изпълним код, така че страницата служи и като опреснителен материал за вашите... умения за анализ на данни.

👉 Изтеглете PDF файла Cheat Sheet тук

Как да инсталирате и импортирате Pandas

Две команди настройват Pandas и двете се изпълняват в терминал или Jupyter Ноутбук клетка.

Стъпка 1) Инсталиране на Pandas

Изпълнете това веднъж за всяка среда; поставете пред него удивителен знак в клетка на бележник.

pip install pandas

Стъпка 2) Импортиране на Pandas

Импортирайте пакета под псевдонима pd, което всеки пример тук предполага.

import pandas as pd

Вече можете да извиквате функции на Pandas, за да манипулирате, анализирате и почиствате данни. Разделите по-долу ги изброяват в реда, в който обикновено ги използвате.

Структури на данни на Pandas

Pandas има две структури от данни, Серия намлява DataFrameИ двата са етикетирани масиви и могат да съдържат данни от всякакъв тип. Единствената разлика е размерността: серията е едномерен масив, а DataFrame е двумерен масив, изграден от numpy масиви отдолу.

Особеност Серия DataFrame
Размери Едноизмерен Двуизмерен
Приема Една етикетирана колона Много колони, смесени dtype-ове
конструктор pd.Серия() pd.DataFrame()

1. Серия

Това е едномерен етикетиран масив. Може да съдържа данни от всякакъв тип и None се превръща в липсваща стойност.

s = pd.Series([2, -4, 6, 3, None], index=['A', 'B', 'C', 'D', 'E'])

2. DataFrame

Това е двуизмерен етикетиран масив. Може да съдържа всякакъв тип данни и колони с различни размери.

data = {'RollNo' : [101, 102, 75, 99],
        'Name' : ['Mithlesh', 'Ram', 'Rudra', 'Mithlesh'],
        'Course' : ['Nodejs', None, 'Nodejs', 'JavaScript']
}
df = pd.DataFrame(data, columns=['RollNo', 'Name', 'Course'])
df.head()

Разпечатаният по-долу лист с инструкции събира същите команди на една страница.

Списък с команди Series и DataFrame за печат на Pandas

Импортиране на данни

Пандите могат да четат много типове файлове директно в DataFrame. Всеки четец по-долу връща един и read_csv() е най-използваният.

# Import a CSV file pd
pd.read_csv(filename)

# Import a TSV file
pd.read_table(filename)

# Import a Excel file pd
pd.read_excel(filename)

# Import a SQL table/database
pd.read_sql(query, connection_object)

# Import a JSON file
pd.read_json(json_string)

# Import a HTML file
pd.read_html(url)

# From clipboard to read_table()
pd.read_clipboard()

# From dict
pd.DataFrame(dict)

селекция

Можете да избирате елементи по тяхното местоположение или по техния индексен етикет. Същият синтаксис с квадратни скоби избира редове, колони и срезове и от двете структури.

1. Серия

# Accessing one element from Series
s['D']

# Accessing all elements between two given indices
s['A':'C']

# Accessing all elements from starting till given index
s[:'C']

# Accessing all elements from given index till end
s['B':]

2. DataFrame

# Accessing one column df
df['Name']

# Accessing rows from after given row
df[1:]

# Accessing till before given row
df[:1]

# Accessing rows between two given rows
df[1:2]

Избор чрез булево индексиране и настройка

употреба iloc намлява iat за целочислени позиции и loc намлява at за етикети.

1. По длъжност

df.iloc[0, 1]

df.iat[0, 1]

2. По етикет

df.loc[[0],  ['Name']]

3. По етикет/позиция

df.loc[2] # Both are same
df.iloc[2]

4. Булево индексиране

Булевата маска запазва само редове, където условието е True. Вторият пример добавя оператора NOT. ~, така че връща и стойности, които не са по-големи от 1.

# Series s where value is > 1
s[(s > 0)]

# Series s where value is <-2 or >1
s[(s < -2) | ~(s > 1)]

# Use filter to adjust DataFrame
df[df['RollNo']>100]

# Set index a of Series s to 6
s['D'] = 10
s.head()

Почистване на данни

За Python за целите на измамнически лист за почистване на данни можете да извършите следните операции:

  • Преименувайте колони, като използвате rename() метод.
  • Актуализирайте стойностите, използвайки at[] or iat[] метод за достъп и промяна на специфични елементи.
  • Създайте копие на серия или DataFrame, използвайки copy() метод.
  • Проверете за NULL стойности, използвайки isnull() метод и ги пуснете, използвайки dropna() метод.
  • Проверете за дублиращи се стойности, като използвате duplicated() метод. Пуснете ги, използвайки drop_duplicates() метод.
  • Заменете NULL стойностите с помощта на fillna() метод с определена стойност.
  • Заменете стойностите, използвайки replace() метод.
  • Сортирайте стойностите, използвайки sort_values() метод.
  • Класирайте стойностите, използвайки rank() метод.
# Renaming columns
df.columns = ['a','b','c']
df.head()

# Mass renaming of columns
df = df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'})

# Or use this edit in same DataFrame instead of in copy
df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'}, inplace=True)
df.head()

# Counting duplicates in a column
df.duplicated(subset='Name')

# Removing entire row that has duplicate in given column
df.drop_duplicates(subset=['Name'])

# You can choose which one keep - by default is first
df.drop_duplicates(subset=['Name'], keep='last')

# Checks for Null Values
s.isnull()

# Checks for non-Null Values - reverse of isnull()
s.notnull()

# Checks for Null Values df
df.isnull()

# Checks for non-Null Values - reverse of isnull()
df.notnull()

# Drops all rows that contain null values
df.dropna()

# Drops all columns that contain null values
df.dropna(axis=1)

# Replaces all null values with 'Guru99'
df.fillna('Guru99')

# Replaces all null values with the mean
s.fillna(s.mean())

# Converts the datatype of the Series to float
s.astype(float)

# Replaces all values equal to 6 with 'Six'
s.replace(6,'Six')

# Replaces all 2 with 'Two' and 6 with 'Six'
s.replace([2,6],['Two','Six'])

# Drop from rows (axis=0)
s.drop(['B',  'D'])

# Drop from columns(axis=1)
df.drop('Name', axis=1)

# Sort by labels with axis
df.sort_index()

# Sort by values with axis
df.sort_values(by='RollNo')

# Ranking entries
df.rank()

# s1 is pointing to same Series as s
s1 = s

# s_copy of s, but not pointing same Series
s_copy = s.copy()

# df1 is pointing to same DataFrame as df
df1 = s

# df_copy of df, but not pointing same DataFrame
df_copy = df.copy()

Имайте предвид, че s1 = s създава само второ име за същия обект, никога копие — ето защо copy() следва го.

Извличане на информация

Можете да извършите тези операции, за да извлечете информация:

  • Използвайте shape атрибут, за да получите броя на редовете и колоните.
  • Използвайте head() or tail() метод за получаване на първите или последните няколко реда като пример.
  • Използвайте info(), describe() or dtypes метод за получаване на информация за типа данни, броя, средната стойност, стандартното отклонение, минималните и максималните стойности.
  • Използвайте count(), min(), max(), sum(), mean() намлява median() методи за получаване на специфична статистическа информация за стойности.
  • Използвайте loc[] метод за получаване на ред.
  • Използвайте groupby() метод за прилагане на функцията GROUP BY за групиране на подобни стойности в колона на DataFrame.

1. Основна информация

# Counting all elements in Series
len(s)

# Counting all elements in DataFrame
len(df)

# Prints number of rows and columns in dataframe
df.shape

# Prints first 10 rows by default, if no value set
df.head(10)

# Prints last 10 rows by default, if no value set
df.tail(10)

# For counting non-Null values column-wise
df.count()

# For range of index df
df.index

# For name of attributes/columns
df.columns

# Index, Data Type and Memory information
df.info()

# Datatypes of each column
df.dtypes

# Summary statistics for numerical columns
df.describe()

2. Обобщение

# For adding all values column-wise
df.sum()

# For min column-wise
df.min()

# For max column-wise
df.max()

# For mean value in number column
df.mean()

# For median value in number column
df.median()

# Count non-Null values
s.count()

# Count non-Null values
df.count()

# Return Series of given column
df['Name'].tolist()

# Name of columns
df.columns.tolist()

# Creating subset
df[['Name', 'Course']]

# Return number of values in each group
df.groupby('Name').count()

Прилагане на функции

apply() изпраща функция през всяка стойност. Правилата за подравняване след това решават какво се случва, когато два обекта споделят само част от индекса си.

# Define function
f = lambda x: x*5

# Apply this function on given Series - For each value
s.apply(f)

# Apply this function on given DataFrame - For each value
df.apply(f)

1. Вътрешно подравняване на данните

# NA values for indices that don't overlap
s2 = pd.Series([8, -1, 4],  index=['A',  'C',  'D'])
s + s2

2. Аритметика Operaции с методи за попълване

# Fill values that don't overlap
s.add(s2, fill_value=0)

3. Филтриране, сортиране и групиране по

Тези функции могат да се използват за филтриране, сортиране и групиранеping Обекти Series и DataFrame.

# Filter rows where column is greater than 100
df[df['RollNo']>100]

# Filter rows where 70 < column < 101
df[(df['RollNo'] > 70) & (df['RollNo'] < 101)]

# Sorts values in ascending order
s.sort_values()

# Sorts values in descending order
s.sort_values(ascending=False)

# Sorts values by RollNo in ascending order
df.sort_values('RollNo')

# Sorts values by RollNo in descending order
df.sort_values('RollNo', ascending=False)

Експортиране на данни

Всеки писател по-долу отразява четец от секцията за импортиране, така че файлът може да направи пътуването без допълнителни инструменти.

# Export as a CSV file df
df.to_csv(filename)

# Export as a Excel file df
df.to_excel(filename)

# Export as a SQL table df
df.to_sql(table_name, connection_object)

# Export as a JSON file
df.to_json(filename)

# Export as a HTML table
df.to_html(filename)

# Write to the clipboard
df.to_clipboard()

Colab на Cheat Sheet

Всяка команда тук може да се изпълни в придружаващия бележник: Pandas Cheat Sheet – Python за Data Science.ipynb.

Въпроси и Отговори

Копирането при запис е винаги активирано, низовете използват специален str dtype, а верижното присвояване на филтрирано копие поражда ChainedAssignmentError. Присвоявайте чрез .loc вместо това. Всяка команда тук все още се изпълнява на панди 3.0.

pd.merge() се свързва със споделени ключове по начина, по който a SQL join прави това, df.join() подравнява по индекса, а pd.concat() натрупва кадри. Използвайте merge за ключове, concat за добавяне.

df.pivot_table() превръща дългите редове в широка агрегирана мрежа, pd.melt() обръща това, а stack() или unstack() премества ниво между индекса и колоните.

pd.to_datetime() преобразува текста в datetime64, .dt аксессорът предоставя година, месец и ден от седмицата, а resample() агрегира по ден, седмица или месец, след като тази колона е индекс.

Векторизираните операции се изпълняват в компилиран C върху целия масив, докато apply() извиква a Python функция веднъж на ред. Размянаping Използването на apply() по редове за векторизиран израз често е десет пъти по-бързо.

Асистентите с изкуствен интелект картографират просто описание на резултата върху конкретни извиквания, предлагайки groupby, merge или pivot_table с аргументите, от които се нуждае всяко от тях. Първо проверете предложението върху малка извадка.

Да. Копилот на GitHub превръща коментар като group by course и count в работещ Pandas код вътре JupyterТретирайте резултата като чернова и проверете броя на редовете.

Предайте dtype на read_csv(), конвертирайте повтарящи се текстови колони в категория, намалете числата с pd.to_numeric и ги заредете на части, използвайки chunksize. df.info() отчита реалния размер.

Обобщете тази публикация с: