pandas
import pandas as pd
pd.__version__ # 查看版本
Series
pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
'''
data:Series 的数据部分,可以是列表、数组、字典、标量值等。如果不提供此参数,则创建一个空的 Series
index:Series 的索引部分,用于对数据进行标记。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引
dtype:指定 Series 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型
name:Series 的名称,用于标识 Series 对象。如果提供了此参数,则创建的 Series 对象将具有指定的名称
copy:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据
fastpath:是否启用快速路径。默认为 False。启用快速路径可能会在某些情况下提高性能
'''
# 使用列表创建 Series
s = pd.Series([1, 2, 3, 4])
# 使用字典创建 Series
s = pd.Series({'a': 1, 'b': 2, 'c': 3, 'd': 4})
# 使用 NumPy 数组创建 Series
s = pd.Series(np.array([1, 2, 3, 4]))
| index |
Series的索引对象 |
| values |
Series的值 |
| dtype或dtypes |
Series的元素类型 |
| shape |
Series的形状 |
| ndim |
Series的维度 |
| size |
Series的元素个数 |
| name |
Series的名称 |
| loc[] |
显示索引,按标签索引或切片 |
| iloc[] |
隐式索引,按位置索引或切片 |
| at[] |
使用标签访问单个元素 |
| iat[] |
使用位置访问单个元素 |
| head() |
查看前n行数据,默认5行 |
| tail() |
查看后n行数据,默认5行 |
| astype(dtype) |
将 Series 转换为指定的类型 |
| isin() |
判断元素是否包含在参数集合中 |
| isna() |
判断是否为缺失值(如NaN或None) |
| isnull() |
返回一个布尔 Series,表示每个元素是否为 NaN |
| notnull() |
返回一个布尔 Series,表示每个元素是否不是 NaN |
| diff() |
计算变化的值 |
| pct_change() |
当前值/前一个值 -1 |
| map(func) |
将指定函数应用于 Series 中的每个元素 |
| apply(func) |
将指定函数应用于 Series 中的每个元素,常用于自定义操作 |
| sum() |
求和,自动忽略缺失值 |
| cumsum() |
返回 Series 的累计求和 |
| cumprod() |
返回 Series 的累计乘积 |
| mean() |
平均值 |
| min() |
最小值 |
| max() |
最大值 |
| idxmax() |
获取最大值的索引 |
| idxmin() |
获取最小值的索引 |
| var() |
方差 |
| std() |
标准差 |
| median() |
中位数 |
| mode() |
众数(可返回多个) |
| quantile(q) |
分位数,q取0~1之间 |
| describe() |
常见统计信息(count、mean、std、min、20%、50%、75%、max) |
| corr(other) |
计算 Series 与另一个 Series 的相关性(皮尔逊相关系数) |
| cov(other) |
计算 Series 与另一个 Series 的协方差 |
| value_counts() |
每个唯一值的出现次数 |
| count() |
非缺失值数量 |
| nunique() |
唯一值个数(去重) |
| unique() |
获取去重后的值数组 |
| drop_duplicates() |
去除重复项 |
| dropna() |
删除 Series 中的缺失值(NaN) |
| fillna(value) |
填充 Series 中的缺失值(NaN) |
| replace(to_replace, value) |
替换 Series 中指定的值 |
| sample() |
随机抽样 |
| sort_index() |
按索引排序 |
| sort_values() |
按值排序 |
| shift(periods) |
将 Series 中的元素按指定的步数进行位移 |
| rank() |
返回 Series 中元素的排名 |
| replace() |
替换值 |
| keys() |
返回Series的索引对象 |
| to_list() |
将 Series 转换为 Python 列表 |
| to_frame() |
将 Series 转换为 DataFrame |
# 索引和值的对应关系
for index, value in s.items():
print(f"Index: {index}, Value: {value}")
# 使用 del 删除指定索引标签的元素。
del s['a'] # 删除索引标签 'a' 对应的元素
# 使用 drop 方法删除一个或多个索引标签,并返回一个新的 Series。
s_dropped = s.drop(['b']) # 返回一个删除了索引标签 'b' 的新 Series
# 创建 Series
data = [1, 2, 3, 4, 5, 6]
index = ['a', 'b', 'c', 'd', 'e', 'f']
s = pd.Series(data, index=index)
# 使用 map 函数将每个元素加倍
s_doubled = s.map(lambda x: x * 2)
print("元素加倍后:", s_doubled)
DataFrame
可以从 列表,字典,numpy数组,series 创建
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
'''
data:DataFrame 的数据部分,可以是字典、二维数组、Series、DataFrame 或其他可转换为 DataFrame 的对象。如果不提供此参数,则创建一个空的 DataFrame。
index:DataFrame 的行索引,用于标识每行数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。
columns:DataFrame 的列索引,用于标识每列数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。
dtype:指定 DataFrame 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型。
copy:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据。
'''
data = [['Google', 10], ['Runoob', 12], ['Wiki', 13]]
# 创建DataFrame 使用列表创建
df = pd.DataFrame(data, columns=['Site', 'Age'])
# 使用astype方法设置每列的数据类型
df['Site'] = df['Site'].astype(str)
df['Age'] = df['Age'].astype(float)
# 使用字典创建
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
'''
修改 DataFrame
修改列数据:直接对列进行赋值。
添加新列:给新列赋值。
添加新行:使用 loc、append()(被弃用) 或 concat 方法。
concat() 方法用于合并两个或多个 DataFrame,当你想要添加一行到另一个 DataFrame 时,可以将新行作为一个新的 DataFrame,然后使用 concat():
'''
# 使用concat添加新行
new_row = pd.DataFrame([[4, 7]], columns=['A', 'B']) # 创建一个只包含新行的DataFrame
df = pd.concat([df, new_row], ignore_index=True) # 将新行添加到原始DataFrame
'''
删除 DataFrame 元素
删除列:使用 drop 方法
删除行:同样使用 drop 方法
'''
df_dropped = df.drop('Column1', axis=1)
df_dropped = df.drop(0) # 删除索引为 0 的行
'''
DataFrame 的合并与分割
合并:使用 concat 或 merge 方法
分割:使用 pivot、melt 或自定义函数
'''
# 纵向合并
pd.concat([df1, df2], ignore_index=True)
# 横向合并
pd.merge(df1, df2, on='Column1')
# 长格式转宽格式
df_pivot = df.pivot(index='Column1', columns='Column2', values='Column3')
# 宽格式转长格式
df_melt = df.melt(id_vars='Column1', value_vars=['Column2', 'Column3'])
| T |
转置 |
| index |
DataFrame的行索引 |
| columns |
DataFrame的列标签 |
| values |
DataFrame的值 |
| dtypes |
DataFrame的元素类型 |
| shape |
DataFrame的形状 |
| ndim |
DataFrame的维度 |
| size |
DataFrame的元素个数 |
| loc[] |
显示索引,按行列便签索引或切片 |
| iloc[] |
隐式索引,按行列位置索引或切片 |
| at[] |
使用行列标签访问单个元素 |
| iat[] |
使用行列位置访问单个元素 |
| transpose() |
转置 DataFrame(行列交换) |
| set_index() |
设置 DataFrame 的索引 |
| reset_index() |
重置 DataFrame 的索引 |
| head() |
查看前n行数据,默认5行 |
| tail() |
查看后n行数据,默认5行 |
| isin() |
判断元素是否包含在参数集合中 |
| isna() |
判断是否为缺失值(如NaN或None) |
| isnull() |
判断缺失值,返回一个布尔值 DataFrame |
| notnull() |
判断非缺失值,返回一个布尔值 DataFrame |
| sum() |
求和,自动忽略缺失值 |
| mean() |
平均值 |
| min() |
最小值 |
| max() |
最大值 |
| var() |
方差 |
| std() |
标准差 |
| median() |
中位数 |
| mode() |
众数(可返回多个) |
| quantile(q) |
分位数,q取0~1之间 |
| describe() |
常见统计信息(count、mean、std、min、25%、50%、75%、max) |
| info() |
显示 DataFrame 的简要信息,包括列名、数据类型、非空值数量等 |
| apply(func) |
对 DataFrame 或 Series 应用一个函数 |
| applymap(func) |
对 DataFrame 的每个元素应用函数(仅对 DataFrame) |
| value_counts() |
每一个唯一值的出现次数 |
| count() |
非缺失值数量 |
| duplicated() |
是否重复 |
| drop_duplicates() |
去除重复项 |
| dropna() |
删除含有缺失值(NaN)的行或列 |
| fillna(value) |
用指定的值填充缺失值 |
| sample() |
随机抽样 |
| replace() |
替换值 |
| sort_index() |
按索引排序 |
| sort_values() |
按值排序 |
| groupby(by) |
分组操作,用于按某一列分组进行汇总统计 |
| pivot_table() |
创建透视表 |
| query() |
使用 SQL 风格的语法查询 DataFrame |
| merge() |
合并多个 DataFrame(类似 SQL 的 JOIN 操作) |
| concat() |
按行或按列连接多个 DataFrame |
| nlargest() |
返回某列最大的n条数据 |
| nsmallest() |
返回某列最小的n条数据 |
csv 文件
df = pd.read_csv('data.csv', sep=';', header=0, names=['A', 'B', 'C'], dtype={'A': int, 'B': float})
| filepath_or_buffer |
CSV 文件的路径或文件对象(支持
URL、文件路径、文件对象等)
|
必需参数 |
| sep |
定义字段分隔符,默认是逗号(,),可以改为其他字符,如制表符(\t)
|
‘,’ |
| header |
指定行号作为列标题,默认为
0(表示第一行),或者设置为 None 没有标题
|
0 |
| names |
自定义列名,传入列名列表 |
None |
| index_col |
用作行索引的列的列号或列名 |
None |
| usecols |
读取指定的列,可以是列的名称或列的索引
|
None |
| dtype |
强制将列转换为指定的数据类型 |
None |
| skiprows |
跳过文件开头的指定行数,或者传入一个行号的列表
|
Non |
| nrows |
读取前 N 行数据 |
None |
| na_values |
指定哪些值应视为缺失值(NaN) |
None |
| skipfooter |
跳过文件结尾的指定行数 |
0 |
| encoding |
文件的编码格式(如
utf-8,latin1 等)
|
None |
df.to_csv('output.csv', index=False, header=True, columns=['A', 'B'])
| path_or_buffer |
CSV
文件的路径或文件对象(支持文件路径、文件对象)
|
必需参数 |
| sep |
定义字段分隔符,默认是逗号(,),可以改为其他字符,如制表符(\t)
|
',' |
| index |
是否写入行索引,默认 True
表示写入索引
|
True |
| columns |
指定写入的列,可以是列的名称列表 |
None |
| header |
是否写入列名,默认 True
表示写入列名,设置为 False 表示不写列名
|
True |
| mode |
写入文件的模式,默认是
w(写模式),可以设置为 a(追加模式)
|
'w' |
| encoding |
文件的编码格式,如
utf-8,latin1 等
|
None |
| line_terminator |
定义行结束符,默认为 \n |
None |
| quoting |
设置如何对文件中的数据进行引号处理(0-3,具体引用方式可查文档)
|
None |
| quotechar |
设置用于引用的字符,默认为双引号
" |
'"' |
| date_format |
自定义日期格式,如果列包含日期数据,则可以使用此参数指定日期格式
|
None |
| doublequote |
如果为
True,则在写入时会将包含引号的文本使用双引号括起来
|
True |
json 文件
import json
df = pd.read_json()