Pandas
是一个基于NumPy的数据分析模块,最初由AQR Capital Management于2008年4月开发,并于2009年底开源。Pandas的名称来源于“Panel Data”(面板数据)和“Python数据分析”(data analysis)。这个库现在由专注于Python数据包开发的PyData开发团队继续开发和维护,属于PyData项目的一部分。
Pandas为Python提供了大量的数据处理函数和方法,使得Python成为强大而高效的数据分析环境。这个库主要提供了三种数据结构:Series(带标签的一维数组)、DataFrame(带标签且大小可变的二维表格结构)和Panel(带标签且大小可变的三维数组)。这些数据结构使得Pandas能够高效地处理大型数据集。
Pandas的主要功能包括数据清理、数据转换、数据提取和分析等。它可以帮助用户解决各种数据问题,如检查两个或多个列之间是否存在相关性,计算数据的平均值、最大值、最小值等。此外,Pandas还能够删除不相关的行或包含错误值的行,这被称为数据清洗。
示例
提高可读性的列重命名:重命名DataFrame列以提高可读性。
为MultiIndex DataFrames展平索引:为简化起见,展平MultiIndex DataFrame。
为DataFrame应用条件格式:使用Styler突出显示特定数据点。
使用分类数据类型优化性能:将对象类型转换为分类类型,以加快操作速度并减少内存使用。
使用filter动态过滤行:根据动态条件过滤DataFrame行。
在多个列上应用函数:使用apply和axis=1在行上应用函数。
使用concat高效合并DataFrames:在管理索引的同时垂直或水平连接DataFrames。
使用read_csv参数进行选择性读取:使用read_csv中的参数读取文件的特定行、列或块。
使用fillna处理缺失数据:用特定值或计算值(如列的均值)填充缺失值。
检测和过滤异常值:根据z分数或IQR识别并删除异常值。
用于报告的DataFrame样式化:使用Pandas Styler为报告生成向DataFrame添加CSS样式。
从列创建MultiIndex:将DataFrame列转换为MultiIndex以创建分层级别。
使用groupby和自定义函数进行聚合:对数据进行分组并应用自定义聚合函数进行详细分析。
时间序列分解:将时间序列数据分解为趋势、季节性和残差分量。
为时间序列分析创建滞后特征:创建滞后特征以在时间序列预测的机器学习模型中使用。
使用pivot_table进行多维分析:为复杂数据汇总创建类似电子表格的数据透视表。
使用set_index进行自定义索引:将DataFrame列设置为索引以便于行查找。
大型数据集的批处理:以批处理方式处理大型数据集以最小化内存使用。
使用melt进行数据规范化:将DataFrame从宽格式规范化或展开到长格式。
使用query安全访问数据:使用query方法使用查询表达式过滤DataFrame。
使用loc进行条件选择:使用loc基于标签进行更复杂的条件选择。
使用at和iat进行快速标量访问:使用at进行基于标签的标量访问,使用iat进行基于整数的访问。
多级索引xs:使用xs从具有多级索引的DataFrame获取交叉部分。
使用factorize创建虚拟变量:将分类变量数值化为虚拟/指示变量。
使用eval和query进行动态查询:使用字符串表达式进行高效查询和列操作。
使用sort_values进行自定义排序:按照一个或多个列进行排序,并指定自定义排序顺序。
使用to_datetime进行高效日期解析:将字符串日期有效地转换为日期时间对象。
df['date'] = pd.to_datetime(df['date_string'], format='%Y-%m-%d')
使用chunksize处理大型数据:以可管理的块处理大型数据。
自定义Groupby聚合:对groupby对象应用自定义聚合函数。
时间序列重采样:对时间序列数据进行降采样或升采样。
使用pivot进行数据重格式化:基于列值对表进行数据透视。
使用Multi-Index进行stack和unstack:将具有多级列的DataFrame转换为更紧凑的形式。
字符串和类别类型之间的转换:将数据类型转换为优化内存使用的格式。
使用不同连接类型合并DataFrames:执行左连接、右连接、内连接和外连接,类似于SQL。
使用iloc切片DataFrame:使用iloc进行基于位置的索引,通过整数位置选择行和列。
根据条件创建数据屏蔽:创建布尔屏蔽以过滤数据。
时间序列的扩展和滚动操作:使用扩展或滚动操作进行累积计算。
数据转换的列映射:对数据转换应用字典映射到列。
将字符串拆分为列:将字符串数据拆分为单独的列。
在多个级别聚合数据:对groupby执行多级别聚合。
使用query进行过滤:query方法允许更可读的过滤语法,特别是对于复杂条件。
使用assign创建新列:动态向DataFrame添加新列,这对于链式操作特别有用。
使用applymap进行矢量化操作:在DataFrame上逐元素地应用函数,对于将变换应用于每个元素很有用。
连接DataFrames:垂直或水平组合多个DataFrames。
在关键列上合并DataFrames:根据关键列合并DataFrames,类似于SQL连接。
使用get_dummies进行独热编码:将分类变量转换为虚拟/指示变量。
自定义聚合的GroupBy:对数据进行分组并应用自定义聚合函数。
使用cut对数据进行分箱:将数据值分段和排序到箱中。
使用replace进行数据清理:替换DataFrame中的值。
删除具有缺失值的列:删除具有一定百分比缺失值的列。
DataFrame内存使用情况:检查DataFrame的内存使用情况。
使用select_dtypes按数据类型选择列:根据数据类型筛选列。
设置和重置索引:使用列作为DataFrame索引或将其重置。
使用iterrows对行进行迭代:以(index, Series)对的形式循环DataFrame行。
对DataFrame操作使用inplace=True:许多DataFrame方法提供inplace参数,允许在原地修改DataFrame而不将结果分配给新变量。这可以使代码更简洁,减少内存使用。
import pandas as pd
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6],
[None, 2, 3],
[None, 5, 6],
], columns=['a', 'b', 'c'])
# 删除带有NaN值的行
df.dropna(inplace=True)
print(df)
使用melt进行数据重塑:将DataFrame从宽格式重塑为长格式,可选择保留标识符。
日期和时间操作:提取或操作日期时间对象的组件。
将DataFrame保存为各种格式:将DataFrame导出为CSV、Excel或SQL数据库。
使用特定dtypes读取数据:在加载数据时指定列数据类型以节省内存。
使用eval进行高效操作:评估描述DataFrame列操作的字符串。
使用str方法进行数据清洗:清理或操作字符串列。
使用df.to_clipboard()将数据复制到剪贴板:将DataFrame的内容复制到剪贴板。
import pandas as pd
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6]
], columns=['a', 'b', 'c'])
# 将DataFrame复制到剪贴板
df.to_clipboard()
使用.T转置DataFrame:转置DataFrame会交换其行和列,这在数据分析中特别有用,特别是当您想要更改数据集的方向以进行可视化或比较时。
import pandas as pd
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6]
], columns=['a', 'b', 'c'])
# 转置DataFrame
df_transposed = df.T
print(df_transposed)
使用.apply()应用函数:.apply()方法允许您在DataFrame或Series的轴上应用函数。对于将复杂函数或lambda表达式应用于数据元素非常有用。
import pandas as pd
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
], columns=['a', 'b', 'c'])
# 在“a”列中求平方
df['a_squared'] = df['a'].apply(lambda x: x**2)
print(df)
使用~反转过滤条件:使用波浪符~反转布尔条件。当您想要选择不匹配某个条件的行时特别有用,例如在DataFrame中选择非空值。
import pandas as pd
df = pd.DataFrame([
[1, 2, 3],
[1, 2, 4],
[None, 2, 4],
[2, 2, 3],
[None, 2, 4]
], columns=['a', 'b', 'c'])
# 通过反转过滤选择“a”不是NaN的行
df_not_null = df[~df['a'].isna()]
print(df_not_null)
条件列创建:使用np.where根据条件创建新列。
多重索引创建:为更复杂的数据分析创建分层索引(MultiIndex)。
透视表:生成用于汇总数据的透视表。
类别数据转换:将分类数据转换为‘category’类型以提高效率。
在索引上合并:使用它们的索引合并两个数据帧。
窗口函数:使用滚动窗口进行计算。
使用GroupBy进行聚合:使用groupby执行高级聚合。
处理缺失数据:使用插值方法智能地处理缺失数据。
矢量化字符串操作:使用矢量化操作无需循环应用字符串方法。
日期处理:将字符串转换为日期时间并提取特征。
内存优化:通过将数字列下降转换为整数来减少内存使用。
交叉表:创建交叉表以探索两列之间的关系。
展开列表:将DataFrame列中的列表扩展为单独的行。
数据归一化:为机器学习归一化数据列。
条件应用函数:根据条件将函数应用于特定行或列。
处理重复行:识别并删除重复行。
类别排序:逻辑排序类别,而不是按字母顺序排序。
时间序列重采样:为不同的时间框架重采样时间序列数据。
过滤的查询方法:使用查询更简洁地过滤行。
为DataFrame应用样式:为更好地可视化,在DataFrame上应用条件格式。
动态列选择:根据条件检查其数据类型或其他条件选择列。
高效的日期范围创建:生成日期和时间序列。
自定义列聚合:在groupby中对不同列应用不同的聚合函数。
DataFrame联接操作:使用索引或公共列联接DataFrame,类似于SQL联接。
保存到多个Excel表:将不同的DataFrame写入同一Excel文件的不同工作表。
列合并:按列合并DataFrame,根据索引对齐。
按行数据追加:将一个DataFrame的行追加到另一个DataFrame。
类别数据排序:控制分类数据中类别的顺序。
重复行识别:基于特定列识别和处理重复行。
加权平均数计算:为分组数据计算加权平均数。
用于数据概览的Pandas Profiling:为DataFrame生成全面的报告进行初步数据分析。
多重索引操作用于分层数据:使用分层索引(MultiIndex)操作DataFrame以处理复杂数据结构。
使用布尔索引对DataFrame进行切片:使用布尔条件对DataFrame进行切片以进行数据子集化。
滚动窗口计算:在滚动窗口中执行计算,例如移动平均数。
扩展窗口用于累积计算:使用扩展窗口计算累积统计信息。
总结
总的来说,Pandas是一个强大而灵活的数据分析工具,它使得Python在数据分析领域具有广泛的应用。无论是金融、科学、社会科学还是其他领域,Pandas都可以帮助用户高效地处理和分析数据,从而得出有价值的结论。以上100个基本操作实例涉及数据排序、数值计算、数据分析、重复处理、布尔索引切片、多重索引设置、文件操作等等操作,其中提到的函数、方法和属性包括不限于以下索引:
函数索引
agg, append, apply, astype, at, columns, concat, crosstab, date_range, downcast, drop_duplicates, dropna, duplicated, eval, expanding, explode, fillna, filter, groupby, iloc, inplace, interpolate, iterrows, join, keep, loc, map, mask, melt, memory_usage, merge, np.average, np.where, pandas_profiling.ProfileReport, pd.Categorical, pd.factorize, pd.melt, pd.to_datetime, pivot, pivot_table, query, read_csv, resample, rolling, seasonal_decompose, select_dtypes, set_index, reset_index, shift, sort_values, stack,\xa0unstack, style.applymap, to_clipboard, to_csv, to_excel, to_datetime, to_file, agg, append, apply, astype, at, columns, concat, crosstab, date_range, downcast, drop_duplicates, dropna, duplicated, eval, expanding, explode, fillna, filter, groupby, iloc, inplace, interpolate, iterrows, join, keep, loc, map, mask, melt, memory_usage, merge, np.average, np.where, pandas_profiling.ProfileReport, pd.Categorical, pd.factorize, pd.melt, pd.to_datetime, pivot, pivot_table, query, read_csv, resample, rolling, seasonal_decompose, select_dtypes, set_index, reset_index, shift, sort_values, stack,\xa0unstack, style.applymap, to_clipboard, to_csv, to_excel, to_datetime, to_file