Pandas 数据科学速查表 Python
什么是 Pandas 速查表?
Pandas库提供了数百个函数,但日常工作中只会用到其中一小部分。 Pandas 速查表 这是一份单页参考资料,列出了这些命令,并按它们执行的任务进行了分组。
它涵盖了 Series 和 DataFrame 结构、文件的导入和导出、数据的选择和排序、数据清理以及函数的应用。以下每个部分都包含简短的解释和可运行的代码,因此该页面也可以作为您的复习资料。 数据分析能力.
如何安装和导入 Pandas
两条命令用于设置 Pandas,两条命令都可以在终端或命令行中运行。 Jupyter 笔记本 细胞。
步骤 1)安装 Pandas
每个环境运行一次;在笔记本单元格中,以感叹号作为前缀。
pip install pandas
步骤 2)导入 Pandas
以别名导入包 pd这里的每个例子都基于这个假设。
import pandas as pd
现在你可以调用 Pandas 函数来操作、分析和清理数据。以下各节按你通常使用它们的顺序排列。
Pandas 数据结构
Pandas 有两种数据结构, 系列 和 数据框两者都是带标签的数组,都可以存储任何数据类型。唯一的区别在于维度:Series 是一维数组,而 DataFrame 是由 和 构成的二维数组。 NumPy的 底层是数组。
| 特性 | 系列 | 数据框 |
|---|---|---|
| 尺寸 | 一维 | 二维 |
| Holds | 一个带标签的列 | 列数众多,数据类型混杂 |
| 构造函数 | pd.Series() | pd.DataFrame() |
1.系列
它是一个一维带标签的数组。它可以存储任何数据类型,并且 None 变为缺失值。
s = pd.Series([2, -4, 6, 3, None], index=['A', 'B', 'C', 'D', 'E'])
2. 数据框
这是一个二维带标签的数组。它可以存储任何数据类型和不同大小的列。
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()
下面这张可打印的速查表将相同的命令汇总在一页上。
导入数据
Pandas 可以直接将多种文件类型读取到 DataFrame 中。下面的每个读取器都会返回一个 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. 数据框
# 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[]oriat[]访问和修改特定元素的方法。 - 使用以下方法创建 Series 或 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()ortail()获取前几行或后几行作为样本的方法。 - 使用
info(),describe()ordtypes获取数据类型、计数、平均值、标准差、最小值和最大值信息的方法。 - 使用
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 备忘单 – Python 用于数据科学.ipynb.

