dataframe的常用操作汇总

本文章汇总了dataframe的一些常用操作,从创建该类型的数据,到数据的增删改取,以及存取excel的方法等,存在不足和遗漏,请谅解。

1.创建dataframe

使用列表创建

import pandas as pd
df = pd.Dataframe([1,2,3,4,5],
			      columns=['列名称'],
			      index=['a','b','c','d','e'])

使用字典创建

import pandas as pd
dic = {'key1':[1,2,3], 'key':[4,5,6]}
df = pd.Dataframe(dic)

2.增

增加列

df['列名称'] = list_data  # 增加新的一列
df.insert(3,'列名称',list_data)  # 在索引为3的位置插入新的一行

增加行

df.iloc[1] = list_data  # 在索引为1的位置插入行

合并dataframe

df = pd.merge(df1, df2, how='left', on=['key1', 'key2'])
df = df1.join(df2, on=['key1', 'key2'], how='inner')
df = df.append(df_new)
df = pd.concat([df1, df2])

3.删

删除列

df.drop('列名称', axis=1)  # 按列名删除某列
df = df[~df['列名称'].isin([0])]  # 删除某列数据为0的值(或理解为取出数据不为0的值)

删除行

df.drop(2)  # 删除存在数值为2的行
df[df['列名称'] > 100]  # 删除数据小于100的行(或理解为取出数据大于100的行)
df[~df['列名称'].str.contains('指定字符')]  # 删除某列中有指定字符的行

4.改

修改索引

df.columns=['name1', 'name2']  # 修改列索引名称

按列索引重新排序

df = df[['name1', 'name2']]  # 按列名称重新排序

替换

df['列名'].replace('待替换的内容', '替换的内容', inplace=True)  # 内容替换

5.取

取行 ——单行

df[1:2]  # 取第二行
df.loc['行名称']  # 取指定行
df[2, :]  # 取第三行

取行 ——多行

df.loc[['行名称1', '行名称2']]  # 取指定多行
df.iloc[:2, :]  # 取前两行

取列 ——单列

df['列名']  # 取指定列
df.列名  # 取指定列
df.iloc[:, 列序号]  # 取指定列

取列 ——多列

df['列名1', '列名2']  # 取指定多列
df.iloc[:, :3]  # 取前三列

取元素

df.loc['行名', '列名']  # 取指定行列的元素
df.iloc['行序号', '列序号']  # 取指定行列的元素

取多行多列

df.iloc[:2, :3]  # 取前两行,前三列
df.loc[['行名1', '行名2'], ['列名1', '列名2']]  # 取指定行列的元素

6.分组、转置、排序

df = df.groupby(['分组列'], as_index=False).mean()  # 分组
df.groupby(['分组列'], as_index=False)['列名'].agg(fun)  # 分组后自定义聚合函数
df.T  # 转置
df = pd.pivot_table(df, index='列索引', columns='行索引', values='值')  # 数据透视表
df.sort_values(by='排序标准', ascending=False, inplace=True)  # 按某列排序

7.数据填充与其它处理

df.fillna(0)  # 0填充缺失值
df['列名'] = df_data['列名'].astype('str').apply(lambda x: str(x).split(' ')[0])  # 数据变换与处理
df['新列名'] = df.apply(lambda df: df['列名1'] / df['列名2'], axis=1)
# print时需要显示所有列、行
pd.set_option('display.max_columns', None)  # 显示所有列
pd.set_option('display.max_rows', None)  # 显示所有行
pd.set_option('max_colwidth', 100)  # 设置value的显示长度为100,默认为50
df['列名'].unique().tolist()  # 对某列去重并排序
例如:[1,1,2,4,3,4,5]   -->   [1,2,3,4,5]

from itertools import groupby
list_data = [x[0] for x in groupby(df_hppc['列名'].to_list())]  # 对某列数据的每段连续重复值仅保留一个
例如:[1,22,333,22,11]   -->   [1,2,3,2,1]

8.按行迭代

for rindex in df.index:
	print('现在是第', rindex, '行')
	print(df.loc[rindex])
for r in df.values:
	print(r)
for rindex, row in df.iterrows():
		print('现在是第', rindex, '行')
		print(row)

9.读取与写入excel

df = pd.read_excel(path)  # 读取excel文件
df.to_excel(path, index=False)  # 写入excel文件

10.Dataframe数据入库

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://用户名:密码@IP:端口/数据库名')
con = engine.connect()

# df看做已有的Dataframe数据
df.to_sql('表名称', con=engine, index=False, if_exists='replace')

11.Dataframe:元素结构处理

# 1.将float元素中的数据都转化为列表形式(应该有更好的办法,希望不吝在评论中指出)

import pandas as pd

# 构建一个dataframe
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8], [1, 4, 5, 2]], columns=['a', 'b', 'c', 'd'])

# 将元素类型转化为字符串,并添加中括号
df = df.astype('str')
df = df.apply(lambda x: '[' + x + ']')

# 将字符串元素(例如:'[1]')转化为列表
df = df.applymap(eval)

# 2.相反,如果要去除列表,保留元素值时
df = df.apply(pd.Series.explode)
  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataFrame是Pandas库中最常用的数据结构之一,它类似于Excel表格,由多行多列的数据组成。下面介绍一些DataFrame常用的方法: 1. head()和tail()方法:分别返回DataFrame的前几行和后几行数据,默认返回前/后五行。 2. info()方法:查看DataFrame的基本信息,包括列名、数据类型、非空值数量、内存占用等。 3. describe()方法:返回DataFrame的基本统计信息,包括计数、平均值、标准差、最小值、最大值等。 4. shape属性:返回DataFrame的行数和列数。 5. columns属性:返回DataFrame的列名。 6. index属性:返回DataFrame的索引。 7. loc[]方法:通过标签定位数据,例如df.loc[0]表示返回第一行数据。 8. iloc[]方法:通过位置定位数据,例如df.iloc[0]表示返回第一行数据。 9. drop()方法:删除指定行或列,需要指定axis参数,axis=0表示删除行,axis=1表示删除列。 10. drop_duplicates()方法:去重,可以指定去重的列。 11. groupby()方法:按照指定列进行分组,可以对分组后的数据进行聚合操作,例如求平均值、求和等。 12. merge()方法:合并多个DataFrame,需要指定合并的列。 13. pivot_table()方法:创建数据透视表,用于对数据进行汇总和分析。 14. apply()方法:对DataFrame中的每个元素应用指定的函数。 15. sort_values()方法:按照指定列排序。 16. set_index()方法:将指定列设置为索引。 这些方法只是DataFrame中的一部分常用方法,还有很多其他方法可以根据需要使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值