pandas->全部函数<-数据操作
读写用存:
--读取和写入数据:
read_csv()
:从CSV文件读取数据
df = pd.read_csv('data.csv')
read_excel()
:从Excel文件读取数据
df = pd.read_excel('data.xlsx')
to_csv()
:将数据保存为CSV文件。
df.to_csv('output.csv', index=False)
to_excel()
:将数据保存为Excel文件。
df.to_excel('output.xlsx', index=False)
--数据查看和处理:
head()
:查看DataFrame或Series的前几行
print(df.head()) # 查看前行
tail()
:查看DataFrame或Series的后几行。
print(df.tail()) # 查看后行
info()
:显示DataFrame或Series的摘要信息,包括列名、非空值数量等。
print(df.info())
describe()
:生成DataFrame或Series的统计摘要,包括计数、均值、最小值、最大值等。
print(df.describe())
shape()
:获取DataFrame的形状(行数和列数)
print(df.shape)
drop()
:删除指定的行或列
df = df.drop(columns=['column1', 'column2']) # 删除指定列
df = df.drop(index=[0, 1, 2]) # 删除指定行
fillna()
:填充缺失值或NaN
df['column'].fillna(value) # 填充某一列的缺失值
df.fillna(value) # 填充整个DataFrame的缺失值
replace()
:替换特定值
df['column'].replace(to_replace=value, value=new_value)
# 替换某一列中的特定值
df.replace(to_replace=value, value=new_value)
# 替换整个DataFrame中的特定值
--数据获取和返回:
df.info()
:提供DataFrame的详细信息,显示关于DataFrame的各个方面的信息
df.info
df.dtypes
:
每一列数据的格式
df.dtypes
df['B'].dtype
# 查看 B 一列格式
df.isnull
:缺失值,空值
df.isnull()
df['B'].isnull()
# 查看 B 一列空值
df.
unique()
:获取DataFrame的形状(行数和列数)
df.unique()
df['B'].unique()
# 查看 B 一列唯一值
df.shape
:获取DataFrame的形状(行数和列数)
df.shape
value
:返回DataFrame或Series的值部分
df.values
df.columns
:获取DataFrame中的列名列表
df.columns
--数据筛选和排序:
loc[]
和iloc[]
:通过标签或整数位置进行索引和切片操作
subset = df.loc[df['column'] > value]
# 根据条件筛选数据子集
subset = df.iloc[1:5, :]
# 根据整数位置选择行范围和所有列
query()
:使用表达式查询条件筛选数据
subset = df.query('column > @value')
# 使用变量作为查询条件筛选数据子集
sort_values()
:按指定列对数据进行排序
df.sort_values(by='column', ascending=False)
# 按指定列降序排序
groupby()
:根据指定的列进行分组操作
grouped_data = df.groupby('column')
# 根据某一列进行分组
--数据分组和聚合:
-
sum()
:计算指定列的总和
df['column'].sum()
-
mean()
:计算指定列的平均值
df['column'].mean()
-
median()
:计算指定列的中位数。
df['column'].median()
-
min()
和max()
:计算指定列的最小值和最大值
df['column'].min()
# 最小值
df['column'].max()
# 最大值
-
count()
:计算指定列的非空值数量
df['column'].count()
-
std()
和var()
:计算指定列的标准差和方差
df['column'].std()
# 标准差
df['column'].var()
# 方差
-
quantile()
:计算指定列的分位数
df['column'].quantile(q=0.75)
# 计算75%分位数
-
agg()
:可以同时应用多个聚合函数,并为每个函数指定一个别名
# 应用多个函数,并取别名
df.agg({'column': ['sum', 'mean'], 'other_column': 'max'})
-
first()
:返回第一个非空值
df['column'].first()
-
last()
:返回最后一个非空值
df['column'].last()
nunique()
:计算唯一值的数量
df['column'].nunique()
数据清洗:
--缺失值处理:
isnull()
: 检测缺失值notnull()
: 检测非缺失值dropna()
: 删除包含缺失值的行或列fillna()
: 填充或替换缺失值
--重复值处理:
duplicated()
: 检测重复值drop_duplicates()
: 删除重复值
--数据类型转换:
astype()
: 转换指定列的数据类型to_numeric()
: 将对象列转换为数值类型to_datetime()
: 将对象列转换为日期时间类型
--字符串操作:
str.lower()
,str.upper()
,str.title()
: 将字符串转换为小写、大写、首字母大写等格式str.strip()
,str.lstrip()
,str.rstrip()
: 去除字符串中的空格或指定字符
--数据排序:
sort_values()
: 根据指定列对数据进行排序sort_index()
: 根据索引对数据进行排序
--数据合并与拆分:
concat()
: 沿着轴(行或列)将多个DataFrame合并在一起。merge()
: 根据指定的列将两个DataFrame连接在一起。split()
: 将字符串列拆分为多个列。
--数据重塑:
melt()
: 将宽格式数据转换为长格式数据。pivot()
,pivot_table()
:
将长格式数据转换为宽格式数据- unstack(),stack():将列转为行,列转为行
- stack():主要作用是将DataFrame的列“堆叠”到行上,从而生成一个更高层次的行索引。这对于处理多层次索引的数据非常有用
- unstack():函数的作用是将行索引转换为列,重新排列数据的结构。
- 下方是我在某些场景使用unstack()函数前后的结构。
--综合处理:
- replace():数据替换
- rename():更改列名称
- lower():大小写转换
- strip():清除字段的字符空格
-
explode():将类列表的每个元素转换为行,实现列转行的功能,可处理列表、元组、Series等类型
-
toList():将一个容器转换为 List,允许重复值,有顺序
-
toSet():将一个容器转换为 Set,不允许重复值,没有顺序
-
toMap():无序、以键值对的形式添加元素,键不能重复,值可以重复
-
isin():大多数用来清洗数据,删选DataFrame中一些行,或判断该列中元素是否在列表中
-
df=pd.DataFrame(np.random.randn(4,4),columns=['A','B','C','D']) """ A B C D 0 -0.018330 2.093506 -0.086293 -2.150479 1 0.104931 -0.271810 -0.054599 0.361612 2 0.590216 0.218049 0.157213 0.643540 3 -0.254449 -0.593278 -0.150455 -0.244485 """ df.A>0 #布尔索引 """ 0 False 1 True 2 True 3 False Name: A, dtype: bool """ #布尔索引应用 df[df.A>0] """ A B C D 1 0.104931 -0.271810 -0.054599 0.361612 2 0.590216 0.218049 0.157213 0.643540 """ df[df[某列].isin(条件)&df[某列].isin(条件)] #应用 df.D=[0,1,0,2] df[df.E.isin(['a','d'])&df.D.isin([0,])] """ A B C D E 0 -0.01833 2.093506 -0.086293 0 a """
数据合并:
--数据表合并:
pd.merge()
-
inner:内连接,默认
df_inner=pd.merge(df,df1,how='inner')
-
left:左连接
df_left=pd.merge(df,df1,how='left')
-
right:右连接
df_right=pd.merge(df,df1,how='right')
-
outer:外连接
df_outer=pd.merge(df,df1,how='outer')
append()
result = df1.append(df2)
join()
result = left.join(right, on='key')
concat()
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
- objs︰ 一个序列或系列、 综合或面板对象的映射。如果字典中传递,将作为键参数,使用排序的键,除非它传递,在这种情况下的值将会选择。任何没有任何反对将默默地被丢弃,除非他们都没有在这种情况下将引发 ValueError
- axis: {0,1,…},默认值为 0
- join: {‘内部’、 ‘外’},默认 ‘外’。如何处理其他 axis(es) 上的索引。联盟内、 外的交叉口。
- ignore_index︰ 布尔值、 默认 False。如果为 True,则不要串联轴上使用的索引值
- join_axes︰ 索引对象的列表。具体的指标,用于其他 n-1 轴而不是执行内部/外部设置逻辑。 keys︰序列,默认为无。构建分层索引使用通过的键作为最外面的级别。如果多个级别获得通过,应包含元组
- levels︰ 列表的序列,默认为无。具体水平 (唯一值) 用于构建多重。否则,他们将推断
- names︰ 列表中,默认为无。由此产生的分层索引中的级的名称
- verify_integrity︰ 布尔值、 默认 False。检查是否新的串联的轴包含重复项
- copy:布尔值、 默认 True。如果为 False,请不要,不必要地复制数据
数据写入:
--数据写入:
-
写入Excel
df_inner.to_excel('excel.xlsx', sheet_name='sheet_name')
-
写入到CSV
df_inner.to_csv('csv.csv')