pandas的concat、merge函数、处理数据

1、concat()函数

pandas的concat()函数用于连接(合并)pandas对象,如Series、DataFrame或Panel,沿指定的轴进行连接。

语法:
pandas.concat(objs, axis=0, join=‘outer’, ignore_index=False, keys=None)

参数说明:

  • objs: 要连接的pandas对象的序列或映射。通常为Series或DataFrame对象。
  • axis: 指定连接的轴,0表示按行连接,1表示按列连接。
  • join: 指定连接的方式,默认为’outer’表示取并集。可选值为’inner’表示取交集。
  • ignore_index: 是否忽略原始对象的索引。默认为False,表示保留原始索引。
  • keys: 用于构建层次化索引的键值,可以是任意值。

pandas库提供了concat()函数用于将多个数据集按照指定的轴方向进行拼接,可以有以下几种常见的用法:

  1. 按行拼接:将多个数据集按照行的方向进行拼接,即把多个数据集竖向拼接在一起。示例代码如下:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

result = pd.concat([df1, df2])
print(result)
  1. 按列拼接:将多个数据集按照列的方向进行拼接,即把多个数据集横向拼接在一起。示例代码如下:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})

result = pd.concat([df1, df2], axis=1)
print(result)
  1. 指定索引:通过ignore_index参数可以重新生成新的索引,示例代码如下:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

result = pd.concat([df1, df2], ignore_index=True)
print(result)
  1. 指定连接方式:通过join参数可以指定拼接的方式,可选的取值包括'inner''outer'。默认为'outer'表示并集,'inner'表示交集。示例代码如下:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [2, 3, 4], 'B': [5, 6, 7]})

result = pd.concat([df1, df2], join='inner')
print(result)

以上是常见的几种concat()函数的用法,根据具体的数据拼接需求,可以灵活选择合适的参数来处理数据。

2、merge()函数
pandas库中的merge()函数是用于合并两个DataFrame对象的方法。

merge()函数的常用参数如下:

  • left:表示第一个DataFrame对象。
  • right:表示第二个DataFrame对象。
  • how:表示合并的方式,默认为’inner’(交集),其他可选值有’outer’(并集)、‘left’(左连接)、‘right’(右连接)。
  • on:表示用于合并的列名,可以是单个列名或包含多个列名的列表。
  • left_on和right_on:表示合并时左右DataFrame对象中用于合并的列名,如果左右两个DataFrame对象中的列名不同,则需要分别指定。
  • suffixes:表示合并后重复列名的后缀,默认为(‘_x’, ‘_y’)。

pandas中的merge函数可以根据指定的列或索引将两个DataFrame对象进行合并。以下是merge函数的常用参数和使用方法:

  1. 基本用法:
df_merged = pd.merge(df1, df2, on='column_name')

此用法将df1和df2按照指定的列名"column_name"进行合并,并返回一个新的合并后的DataFrame对象df_merged。

  1. 指定合并方式:
df_merged = pd.merge(df1, df2, on='column_name', how='inner')

merge函数的how参数可以设置合并的方式,包括’inner’、‘outer’、‘left’、‘right’。默认为’inner’,表示取交集。其他方式分别表示取并集、以df1为准、以df2为准。

  1. 指定合并的列名:
df_merged = pd.merge(df1, df2, left_on='column1', right_on='column2')

如果要合并的列名不同,可以使用left_on和right_on参数分别指定df1和df2中要合并的列名。

  1. 多列合并:
df_merged = pd.merge(df1, df2, on=['column1', 'column2'])

可以通过一个列表指定多个列名,进行多列合并。

  1. 处理缺失值:
df_merged = pd.merge(df1, df2, on='column_name', how='outer')

通过设置how参数为’outer’,可以将缺失值填充为NaN。

以上是merge函数的一些常用用法,详细的参数和用法可以参考pandas官方文档。

3、pandas处理JSON数据

pandas可以非常方便地处理JSON数据。下面是一个示例,展示了如何使用pandas读取和处理JSON数据:

首先,我们需要使用pandas的read_json()函数读取JSON数据。这个函数可以直接读取包含JSON数据的文件,并将其转换为pandas的DataFrame对象。

import pandas as pd

# 读取JSON数据
data = pd.read_json('data.json')

# 查看数据
print(data)

如果JSON数据是以字符串形式存储在变量中,而不是保存在文件中,可以使用pandas的json.loads()函数将其转换为Python字典,然后再通过pd.DataFrame.from_dict()函数转换为DataFrame对象。

import pandas as pd
import json

# JSON数据字符串
json_data = '{"name": "Alice", "age": 25}'

# 转换为Python字典
data_dict = json.loads(json_data)

# 转换为DataFrame对象
data = pd.DataFrame.from_dict(data_dict, orient='index')

# 查看数据
print(data)

一旦数据被转换为DataFrame对象,就可以使用pandas提供的各种函数和方法对其进行处理和分析。例如,可以使用data['name']data.loc['name']来访问DataFrame中的某一列,使用data.iloc[0]data.loc['name']来访问DataFrame中的某一行。

如果JSON数据是一个包含多个对象的数组,可以使用pd.concat()函数将多个DataFrame对象合并为一个DataFrame对象。假设JSON数据的每个对象都是一个人的信息,包括姓名和年龄:

import pandas as pd

# JSON数据
json_data = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]'

# 转换为DataFrame对象
data = pd.concat([pd.DataFrame.from_dict(d, orient='index') for d in json.loads(json_data)], axis=1)

# 查看数据
print(data)

这样,我们就可以方便地使用pandas对JSON数据进行处理和分析了。

4、处理数据

要删除财报数据中的金融行业数据,您可以按照以下步骤使用pandas进行处理:

  1. 导入pandas库:
import pandas as pd
  1. 读取财报数据文件:
df = pd.read_csv('财报数据.csv')
  1. 查看数据中的行业分类列:
print(df['行业分类'])
  1. 确定金融行业所对应的行业分类值,然后创建一个布尔索引(例如,将行业分类为金融的数据标记为True,其他行业标记为False):
金融行业 = df['行业分类'] == '金融'
  1. 使用布尔索引来过滤数据框,只保留非金融行业的数据:
df = df[~金融行业]
  1. 可选择将过滤后的数据保存到新的csv文件中:
df.to_csv('非金融行业数据.csv', index=False)

通过以上步骤,您可以使用pandas处理财报数据并删除金融行业数据。

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值