Pandas总结笔记
Pandas是Python中一个非常强大的数据处理库,它提供了快速、灵活且表达式丰富的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。Pandas的两个主要数据结构是Series
(一维数组)和DataFrame
(二维的、表格型的数据结构)。以下是对Pandas的一些核心特性和常用功能的总结。
1. 数据结构
- Series:
- 一维数组,可以存储任何数据类型(整数、字符串、浮点数、Python对象等)。
- 它有一个标签(index)与数据关联,允许快速的数据访问。
- 创建方式:
pd.Series(data, index=index)
- DataFrame:
- 二维的、表格型的数据结构,可以看作是由多个Series组成的字典(共享同一个索引)。
- 每一列可以是不同的数据类型。
- 创建方式:
pd.DataFrame(data, index=index, columns=columns)
2. 数据读取与写入
Pandas支持多种文件格式的读取与写入,如CSV、Excel、JSON、SQL数据库等。
- 读取数据:
pd.read_csv(filepath_or_buffer, sep=',', ...)
pd.read_excel(io, sheet_name=0, ...)
pd.read_json(path_or_buf=None, orient=None, ...)
pd.read_sql_query(sql, con, index_col=None, ...)
- 写入数据:
DataFrame.to_csv(path_or_buf=None, sep=',', ...)
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', ...)
DataFrame.to_json(path_or_buf=None, orient='records', ...)
DataFrame.to_sql(name, con, schema=None, if_exists='fail', ...)
3. 数据选择与过滤
- 选择列:
df['column_name']
或df.column_name
(如果列名符合Python变量命名规则)
- 选择行:
- 基于位置:
df.iloc[row_indexer, column_indexer]
- 基于标签:
df.loc[row_labeler, column_labeler]
- 基于位置:
- 条件过滤:
- 使用布尔索引:
df[df['column_name'] > some_value]
- 使用布尔索引:
4. 数据处理
- 数据清洗:
- 缺失值处理:
df.dropna()
,df.fillna(value)
- 重复值处理:
df.drop_duplicates()
- 缺失值处理:
- 数据转换:
- 应用函数:
df.apply(func, axis=0)
- 映射替换:
df['column_name'].map(lambda x: x.upper())
- 应用函数:
- 数据分组与聚合:
- 分组:
grouped = df.groupby('group_column')
- 聚合:
grouped.agg({'column1': 'sum', 'column2': 'mean'})
- 分组:
- 数据排序:
df.sort_values(by=['column1', 'column2'], ascending=[True, False])
- 合并与连接:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, ...)
pd.concat([df1, df2], axis=0, ignore_index=True)
5. 数据分析与可视化
- 描述性统计:
df.describe()
- 数据可视化(通常结合Matplotlib或Seaborn):
df.plot()
- 也可以利用Pandas内置的绘图方法直接对DataFrame或Series进行可视化,但更复杂的图表可能需要借助Matplotlib或Seaborn。
6. 性能优化
- 使用合适的数据类型:减少内存占用,提高处理速度。
- 避免不必要的复制:在修改DataFrame时,尽量原地修改,避免使用
.copy()
。 - 利用向量化操作:Pandas的许多操作都是基于向量化运算的,比循环快得多。
- 设置合适的索引:好的索引可以极大地提高数据检索和过滤的速度。