任务描述
本关任务:分别使用Series对象和字典类型数据创建一个DataFrame对象。
相关知识
Pandas的另一个基础数据结构是DataFrame。和上一节介绍的 Series对象一样,DataFrame既可以作为一个通用型NumPy数组,也可以看作特殊的Python字典。
创建DataFrame对象
Pandas的DataFrame对象可以通过许多方式创建,这里举几个常用的例子。
- 通过数组创建:
- pd.DataFrame(array, index=list0, columns=list1) #list表示一个列表
- 通过单个Series对象创建:
- pd.DataFrame(Series,columns=list)
- 通过字典列表创建:
- data = [{'a': i, 'b': 2 * i} for i in range(3)] pd.DataFrame(data)
DataFrame是通用的NumPy数组
如果将Series类比为带灵活索引的一维数组,那么DataFrame就可以看作是一种既有灵活的行索引,又有灵活列名的二维数组,你也可以把DataFrame看成是有序排列的若干Series对象。这里的“排列”指的是它们拥有共同的索引index。- # 创建Series对象
- In: area_dict = {'California': 423967, 'Texas': 695662, 'New York': 141297, 'Florida': 170312, 'Illinois': 149995}
- In: population_dict = {'California': 38332521,'Texas': 26448193, 'New York': 19651127, 'Florida': 19552860, 'Illinois': 12882135}
- In: population = pd.Series(population_dict)
- In: area = pd.Series(area_dict)
- # 创建DataFrame对象
- In: states = pd.DataFrame({'population': population, 'area': area})
- In: states
- Out: area population
- California 423967 38332521
- Florida 170312 19552860
- Illinois 149995 12882135
- New York 141297 19651127
- Texas 695662 26448193
- In: states.columns
- Out: Index(['area', 'population'], dtype='object')
DataFrame是特殊的字典
与Series类似,我们也可以把DataFrame看成一种特殊的字典。字典是一个键映射一个值,而DataFrame是一列映射一个Series的数据。例如,通过area的列属性可以返回包含面积数据的Series对象。
- In: states['area']
- Out: California 423967
- Florida 170312
- Illinois 149995
- New York 141297
- Texas 695662
- Name: area, dtype: int64
注意:在 NumPy 的二维数组里,data[0] 返回第一行;而在 DataFrame 中,data['列名']返回与列名相匹配的那一列。
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能:
-
将数据转换为Series对象 然后通过Series对象创建一个DataFrame对象,并输出;
-
将数据转换为字典,然后通过字典创建一个DataFrame对象,并输出;
-
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入的第一行为列索引,第二行为第一列数据,第三行为第二列数据。
测试输入:
1,2,3,4,6
a,aa,aaa,aaaa,aaaaa
b,bb,bbb,bbbb,bbbbb
预期输出:
- first second
- 1 a b
- 2 aa bb
- 3 aaa bbb
- 4 aaaa bbbb
- 6 aaaaa bbbbb
- first second
- 1 a b
- 2 aa bb
- 3 aaa bbb
- 4 aaaa bbbb
- 6 aaaaa bbbbb
实现代码:
import pandas as pd
index = input() # 输入的是一个字符串,用于列索引,详细数据请查看测试集
value1 = input() # DataFrame对象的第一列数据
value2 = input() # DataFrame对象的第二列数据
# 将数据转换为Series对象 然后通过Series对象创建一个DataFrame对象,然后输出
#********** Begin **********#
ps=pd.Series(value1.split(","),index=list(index.split(",")))
pp=pd.DataFrame({'first':ps,'second':value2.split(",")})
print(pp)
#********** End **********#
# 将数据转换为字典,然后通过字典创建一个DataFrame对象,然后输出
#********** Begin **********#
ps=pd.Series(value1.split(","),index=list(index.split(",")))
pp=pd.DataFrame({'first':ps,'second':value2.split(",")})
print(pp)
#********** End **********#



