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()
函数用于将多个数据集按照指定的轴方向进行拼接,可以有以下几种常见的用法:
- 按行拼接:将多个数据集按照行的方向进行拼接,即把多个数据集竖向拼接在一起。示例代码如下:
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)
- 按列拼接:将多个数据集按照列的方向进行拼接,即把多个数据集横向拼接在一起。示例代码如下:
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)
- 指定索引:通过
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)
- 指定连接方式:通过
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函数的常用参数和使用方法:
- 基本用法:
df_merged = pd.merge(df1, df2, on='column_name')
此用法将df1和df2按照指定的列名"column_name"进行合并,并返回一个新的合并后的DataFrame对象df_merged。
- 指定合并方式:
df_merged = pd.merge(df1, df2, on='column_name', how='inner')
merge函数的how参数可以设置合并的方式,包括’inner’、‘outer’、‘left’、‘right’。默认为’inner’,表示取交集。其他方式分别表示取并集、以df1为准、以df2为准。
- 指定合并的列名:
df_merged = pd.merge(df1, df2, left_on='column1', right_on='column2')
如果要合并的列名不同,可以使用left_on和right_on参数分别指定df1和df2中要合并的列名。
- 多列合并:
df_merged = pd.merge(df1, df2, on=['column1', 'column2'])
可以通过一个列表指定多个列名,进行多列合并。
- 处理缺失值:
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进行处理:
- 导入pandas库:
import pandas as pd
- 读取财报数据文件:
df = pd.read_csv('财报数据.csv')
- 查看数据中的行业分类列:
print(df['行业分类'])
- 确定金融行业所对应的行业分类值,然后创建一个布尔索引(例如,将行业分类为金融的数据标记为True,其他行业标记为False):
金融行业 = df['行业分类'] == '金融'
- 使用布尔索引来过滤数据框,只保留非金融行业的数据:
df = df[~金融行业]
- 可选择将过滤后的数据保存到新的csv文件中:
df.to_csv('非金融行业数据.csv', index=False)
通过以上步骤,您可以使用pandas处理财报数据并删除金融行业数据。