文章目录
Pandas是在NumPy基础上建立的新程序库,提供了一种高效的 DataFrame数据结构。DataFrame本质上是一种带行标签和列标签、支持相同类型数据和缺失值的多维数组。Pandas不仅为带各种标签的数据提供了便利的存储界面,还实现了许多强大的操作,这些操作对数据库框架和电子表格程序的用户来说非常熟悉。
本实训主要介绍Pandas的安装和使用以及Pandas对象。
第1关:安装并使用Pandas
编程要求
本关的编程任务是补全右侧编辑器中的demo()函数,要求通过__version__查看Pandas当前版本号。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
无测试输入
预期输出:
0.23.0
开始你的任务吧,祝你成功!
import pandas as pd
def demo():
#将pandas的版本号赋值给version_number
#********** Begin **********#
version_number = pd.__version__
#********** End **********#
return version_number
第2关:Pandas的Series对象
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,创建一个Series对象,并输出。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入中的第一行为Series对象中的列索引,第二行为Series对象中每一行的值。
测试输入:
a,b,c,d,e,f
6,5,4,2,1,3
预期输出:
a 6
b 5
c 4
d 2
e 1
f 3
dtype: object
开始你的任务吧,祝你成功!
import pandas as pd
import numpy as np
a = input() # 输入的是一个字符串,详细数据可查看测试集
b = input()
# 使用任意方法创建一个Series对象,并输出
#********* Begin **********#
t = pd.Series(np.array(b.split(',')), index=np.array(a.split(',')))
print(t)
#********* Begin **********#
第3关:Pandas的DataFrame对象
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能:
将数据转换为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
import numpy as np
index = input() # 输入的是一个字符串,用于列索引,详细数据请查看测试集
value1 = input() # DataFrame对象的第一列数据
value2 = input() # DataFrame对象的第二列数据
# 将数据转换为Series对象 然后通过Series对象创建一个DataFrame对象,然后输出
#********** Begin **********#
d1 = {'first': pd.Series(np.array(value1.split(',')), index=np.array(index.split(','))),
'second': pd.Series(np.array(value2.split(',')), index=np.array(index.split(',')))}
df1 = pd.DataFrame(d1)
print(df1)
#********** End **********#
# 将数据转换为字典,然后通过字典创建一个DataFrame对象,然后输出
#********** Begin **********#
d2 = {'first': np.array(value1.split(',')), 'second': np.array(value2.split(','))}
df2 = pd.DataFrame(d2,index=np.array(index.split(',')))
print(df2)
#********** End **********#
第4关:Pandas的Index对象
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求获取两个Series对象的index对象,然后求交集与并集,并输出。
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
无测试输入
预期输出:
交集:Int64Index([1, 3, 4], dtype=‘int64’)
并集:Int64Index([1, 2, 3, 4, 5, 6, 22, 66], dtype=‘int64’)
开始你的任务吧,祝你成功!
import pandas as pd
def demo4():
data1 = pd.Series([1,2,3,4,66])
data2 = pd.Series([1,22,3,4,5,6])
# 获取两个Series对象的index对象,然后求交集与并集,并输出
#********** Begin **********#
a= pd.Index(data1)
b= pd.Index(data2)
print("交集:{}".format(a & b))
print("并集:{}".format(a | b))
#********** Begin **********#
return
- Pandas数据取值与选择
本节主要介绍Pandas的Series和DataFrame对象相似的数据获取与调整操作。如果学习过之前的Numpy操作模式,就会非常熟悉Pandas的操作模式。
第1关:Series数据选择
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能:
添加一行数据,时间戳2019-01-29值为320;
获取2019-01-04号之后的数据(包含该日期);
最后筛选值大于100的数据,得到以下目标Series对象;
2019-01-06 981
2019-01-11 647
2019-01-17 198
2019-01-20 1698
2019-01-21 7496
2019-01-24 8201
2019-01-29 320
dtype: int64
具体要求请参见后续测试样例。
提示:使用to_datetime()函数可以将字符串转换成时间戳。
pd.to_datetime(‘2019-01-01’)
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
np.array([4,9,4,3,1,981,13,6,46,1,647,64,31,46,46,13,198,76,13,1698,7496,2,100,8201,30])
预期输出:
2019-01-06 981
2019-01-11 647
2019-01-17 198
2019-01-20 1698
2019-01-21 7496
2019-01-24 8201
2019-01-29 320
dtype: int64
开始你的任务吧,祝你成功!
import pandas as pd
import numpy as np
arr = input()
dates = pd.date_range('20190101', periods=25) # 生成时间序列
df = pd.Series(eval(arr),index=dates)
#完成编程要求,并输出结果
#********** Begin **********#
df[pd.to_datetime('2019-01-29')]=320
a = df['2019-01-04'::]
print(a[a>100])
#********** End **********
第2关:DataFrame数据选择方法
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能:
完成下列要求。初始DataFrame如图所示:
根据相关知识介绍的取值方法将初始DataFrame转换成下图所示DataFrame,并输出:
Florida Washington
deaths 616 62
deserters 2 31
readiness 3 3
regiment Nighthawks Dragoons
size 1400 849
veterans 26 48
具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:
无测试输入
预期输出:
Florida Washington
deaths 616 62
deserters 2 31
readiness 3 3
regiment Nighthawks Dragoons
size 1400 849
veterans 26 48
开始你的任务吧,祝你成功!
import pandas as pd
def demo(raw_data,origin):
df = pd.DataFrame(raw_data,index=origin)
#转换成编程要求所示DataFrame, 并输出
#********** Begin **********#
print(df.loc[['Florida','Washington'],'deaths':].T)
#********** End **********#
return