在数据分析领域,pandas是一个常用的库,它可以实现各种数据操作和处理,包括数值计算、数据清洗、数据聚合和转换等。在这些操作中,数据格式的转换是一项基本的技能,特别是在大型数据集处理时,常常需要将不同格式的数据转换成pandas可以处理的格式,比如字典和dataFrame的相互转换。下面就让我们一起学习一下这方面的知识。
1. 字典转dataFrame
在pandas中,可以使用DataFrame()函数将字典转换成dataFrame,DataFrame()函数的语法如下:
import pandas as pd
df = pd.DataFrame(data=字典)
其中,data参数是一个字典对象,可以包含不同类型的数据,如数字、字符串、列表等。
1.1 示例
下面以一个包含学生信息的字典为示例,演示如何将该字典转换成dataFrame:
import pandas as pd
student_dict = {
'姓名': ['张三', '李四', '王五', '赵六'],
'性别': ['男', '男', '女', '男'],
'年龄': [20, 21, 19, 22],
'成绩': [88, 92, 85, 90]
}
df = pd.DataFrame(data=student_dict)
print(df)
输出结果:
姓名 性别 年龄 成绩
0 张三 男 20 88
1 李四 男 21 92
2 王五 女 19 85
3 赵六 男 22 90
可以看出,通过DataFrame()函数将字典转换成了一个dataFrame对象,并且每个元素的类型分别为字符串、整数和列表。
1.2 指定列顺序
如果要指定dataFrame中列的顺序,可以使用columns参数,如下所示:
df = pd.DataFrame(data=student_dict, columns=['姓名', '年龄', '性别', '成绩'])
print(df)
输出结果:
姓名 年龄 性别 成绩
0 张三 20 男 88
1 李四 21 男 92
2 王五 19 女 85
3 赵六 22 男 90
可以看到,通过指定columns参数,可以改变dataFrame中列的顺序。
2. dataFrame转字典
如果要将一个dataFrame对象转换成字典,可以使用to_dict()函数。to_dict()函数的语法如下:
字典 = dataFrame.to_dict()
to_dict()函数有几个可选参数,包括orient、into和columns,下面我们将详细介绍。
2.1 orient参数
orient参数用来指定返回字典的格式,可选的取值有'dict'、'list'、'series'和'index'。默认值为'dict'。
当orient='dict'时,返回格式为字典,其中字典的键为dataFrame每列的名称,值为一个字典,包含每列的全部数据。
当orient='list'时,返回格式为列表,其中列表的元素为一个字典,包含一行数据。
当orient='series'时,返回格式为字典,其中字典的键为dataFrame每列的名称,值为一个Series对象。
当orient='index'时,返回格式为字典,其中字典的键为dataFrame每行的名称,值为一个字典,包含每行的全部数据。
2.2 columns参数
columns参数用来指定只转换哪些列的数据,默认情况下转换全部列。
2.3 示例
下面以一个包含学生信息的dataFrame为示例,演示如何将该dataFrame转换成字典:
import pandas as pd
student_data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'性别': ['男', '男', '女', '男'],
'年龄': [20, 21, 19, 22],
'成绩': [88, 92, 85, 90]
}
df = pd.DataFrame(data=student_data)
print('原始dataFrame:\n', df)
# 转换为字典
# 返回格式为dict,默认情况下
dict1 = df.to_dict()
print('默认格式:\n', dict1)
# 返回格式为list
dict2 = df.to_dict(orient='list')
print('list格式:\n', dict2)
# 返回格式为series
dict3 = df.to_dict(orient='series')
print('series格式:\n', dict3)
# 返回格式为index
dict4 = df.to_dict(orient='index')
print('index格式:\n', dict4)
# 指定只转换名称为'姓名'和'成绩'的两列
dict5 = df[['姓名', '成绩']].to_dict()
print('两列字典:\n', dict5)
输出结果:
原始dataFrame:
姓名 性别 年龄 成绩
0 张三 男 20 88
1 李四 男 21 92
2 王五 女 19 85
3 赵六 男 22 90
默认格式:
{'姓名': {0: '张三', 1: '李四', 2: '王五', 3: '赵六'}, '性别': {0: '男', 1: '男', 2: '女', 3: '男'}, '年龄': {0: 20, 1: 21, 2: 19, 3: 22}, '成绩': {0: 88, 1: 92, 2: 85, 3: 90}}
list格式:
{'姓名': ['张三', '李四', '王五', '赵六'], '性别': ['男', '男', '女', '男'], '年龄': [20, 21, 19, 22], '成绩': [88, 92, 85, 90]}
series格式:
{'姓名': 0 张三
1 李四
2 王五
3 赵六
Name: 姓名, dtype: object, '性别': 0 男
1 男
2 女
3 男
Name: 性别, dtype: object, '年龄': 0 20
1 21
2 19
3 22
Name: 年龄, dtype: int64, '成绩': 0 88
1 92
2 85
3 90
Name: 成绩, dtype: int64}
index格式:
{0: {'姓名': '张三', '性别': '男', '年龄': 20, '成绩': 88}, 1: {'姓名': '李四', '性别': '男', '年龄': 21, '成绩': 92}, 2: {'姓名': '王五', '性别': '女', '年龄': 19, '成绩': 85}, 3: {'姓名': '赵六', '性别': '男', '年龄': 22, '成绩': 90}}
两列字典:
{'姓名': {0: '张三', 1: '李四', 2: '王五', 3: '赵六'}, '成绩': {0: 88, 1: 92, 2: 85, 3: 90}}
可以看出,to_dict()函数可以根据需要返回不同格式的字典,同时也可以根据需要指定只转换部分列的数据。
总结
本文介绍了pandas中字典和dataFrame的相互转换方法,并且详细介绍了DataFrame()函数和to_dict()函数的用法。通过本文的学习,读者可以掌握常见的数据格式转换技巧,提高数据处理和分析的能力。