第1关:Series数据选择
任务描述
本关任务:根据相关知识,得到目标Series
对象,具体要求请查看编程要求。
相关知识
Series
对象与一维Numpy
数组和标准Python
字典在许多方面都一样。所以,Series
对象的数据索引和选择模式与以上两种数据结构类似。
Series数据选择方法
与Python
中的字典一样,Series
对象提供了键值对的映射。
In: import pandas as pd
In: data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd'])
In: data["b"]
Out: 0.5
还可以用Python
字典的表达式和方法来检测键/索引和值,也可以像字典一样来修改Series
对象的值。
In: "a" in data
Out: True
In: data.keys()
Out: Index(['a', 'b', 'c', 'd'], dtype='object')
In: list(data.items())
Out: [('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]
In: data["b"] = 0.05 # 也可以通过此方法来扩展Series
In: data
Out: a 0.25
b 0.05
c 0.75
d 1.00
dtype: float64
Series
对象的可变性是一个非常方便的特性:Pandas
在底层已经为可能发生的内存布局和数据复制自动决策,用户不需要担心这些问题。
将Series看作一堆数组
Series
对象还具备和Numpy
数组一样的数组数据选择功能,包括索引、掩码、花哨索引等操作,具体示例如下所示:
将显示索引作为切片:
注意:显示索引切片结果包含最后一个索引,也就是能取到“c”的值。
In: data['a':'c']
Out: a 0.25
b 0.50
c 0.75
dtype: float64
将隐式整数索引作为切片:
注意:隐式索引切片结果不包含最后一个索引。
In: data[0:2]
Out: a 0.25
b 0.50
dtype: float64
掩码:
In: data[(data > 0.3) & (data < 0.8)]
Out: b 0.50
c 0.75
dtype: float64
花哨的索引:
In: data[["a","e"]]
Out: a 0.25
e 1.25
dtype: float64
索引器:loc和iloc
这些切片和取值操作非常混乱,假如Series
对象索引序列为整数时,data[2]
不会取第三行,而是取索引序列为2
的那一行,也就是说会优先使用显示索引,而data[1:3]
这样的切片操作会优先使用隐式索引。
In: data = pd.Series(['a', 'b', 'c'], index=[1, 3, 5])
In: data[1]
Out: "a"
In: data[0:2]
Out: 1 a
3 b
dtype: object
正是应为这些整数索引很容易造成混淆,所以Pandas
提供了一些 索引器(indexer) 属性来作为取值的方法。它们不是Series
对象的函数方法,而是暴露切片接口的属性。
loc
属性:表示取值和切片都是显式的;In: data.loc[1]
Out: "a"
In: data.loc[1:3]
Out: 1 a
3 b
dtype: object
iloc
属性:表示取值和切片都是Python
形式的隐式索引;In: data.iloc[1]
Out: "b"
In: data.iloc[1:3]
Out: 3 b
5 c
dtype: object
Python
代码的设计原则之一式“显示优于隐式”。使用loc
和iloc
可以让代码更容易维护,可读性更高。特别是在处理整数索引的对象时,我强烈推荐使用这两种索引器。它们既可以让代码阅读和理解起来更容易,也能避免因误用索引或者切片而产生的小bug
。
编程要求
本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能:
- 添加一行数据,时间戳
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 **********#
a=pd.to_datetime('2019-01-29')
b=pd.to_datetime('2019-01-04')
df[a]=320
dh=df[b:]
print(dh[dh>100])
#********** End **********
第1关:Series数据选择相关推荐
- Case Study: 利用JS实现数据库网页的数据分页、数据选择、数据详细信息查看功能
一.目标 该笔记的目的是引导读者借助WampServer平台和MySQL数据库,利用HTML/CSS/JS/PHP设计一个能够进行实现数据分页显示.数据选择.数据详细信息查看功能的数据库网页.该数据库 ...
- pandas编写自定义函数、使用apply函数应用自定义函数基于Series数据生成新的dataframe
pandas编写自定义函数.使用apply函数应用自定义函数基于Series数据生成新的dataframe 目录 pandas编写自定义函数.使用apply函
- 独家 | SVP:一种用于深度学习的高效数据选择方法
作者:Cody Coleman, Peter Bailis, and Matei Zaharia 翻译:杨毅远 校对:王琦 本文长度为1800字,建议阅读7分钟 本文为你介绍SVP方法如何在保证识别准 ...
- 用于弹出ModalDialog进行数据选择的控件
修改了一下. 要另外写js函数去打开窗口还是麻烦了点, 现在打开窗口的js函数由控件生成了. 过去写的webform程序, 很多地方需要弹出一个窗口进行数据选择. 最简单的情况是选择了弹出窗口某条 ...
- 【若依(ruoyi)】自定义的数据选择对话框
前言 若依(ruoyi): v4.3 mysql:5.7.31 自定义的数据选择对话框的开发说明 在"若依(ruoyi)"中,数据选择对话框可以分为2类: 树表数据的选择对话框,比 ...
- 【若依(ruoyi)】数据选择对话框
前言 若依(ruoyi): v4.3 mysql:5.5.40 假设的需求 使用部门选择框,选择部门. 其它使用选择框的操作.比如:选择入库单.出库单.用户.- 分析 在"RuoYi&quo ...
- android开发实现选择列表,Android使用RecyclerView实现列表数据选择操作
Android使用RecyclerView实现列表数据选择操作 发布时间:2020-08-31 17:50:13 来源:脚本之家 阅读:76 作者:迟做总比不做强 这些时间做安卓盒子项目,因为安卓电视 ...
- python pandas series加速原理_python pandas中对Series数据进行轴向连接的实例
有时候我们想要的数据合并结果是数据的轴向连接,在pandas中这可以通过concat来实现.操作的对象通常是Series. Ipython中的交互代码如下: In [17]: from pandas ...
- python 数据分析入门教程(三)_Python数据分析入门教程(三):数据选择——AIU人工智能学院-经管之家官网!...
https://p1.pstatp.com/large/pgc-image/a6743a84f13a4f07a7ec3e9405467c6a 在上面的代码中,iloc后的方括号中逗号之前的部分表示要获 ...
最新文章
- Android EditText
- python好学嘛-Python好学吗?Python学习路线
- Python 之 random模块
- vmware中centos6.4突然无法进入图形界面解决方法
- grDevices | 如何在图形中使用数学表达式作为标注文本
- Android开启/关闭飞行模式命令
- PXE网络装机和kickstart无人值守
- C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
- 温度传感器的类型原理特点和应用
- VSCode中安装Django插件后实现html语法提示
- 基于生物特征密钥生成研究 ------应用于区块链领域密钥的生成办法
- python程序文件扩展名主要是什么_python程序文件扩展名知识点详解
- API 接口应该如何设计?如何保证安全?如何签名?如何防重?
- Spring中bean的scop
- 生成对抗式网络 (GAN) 及其应用
- Python生成声音波形、模拟钢琴音色
- VGG论文原文重点提炼解析
- 【PPic】在PPic图床中如何配置使用七牛
- windows10 设定和取消定时关机
- iOS 简单实用的音乐播放器,少年,自己做个歌单吧。。。。。。
热门文章
- 代码覆盖率在性能优化上的一种可行应用
- Effective Java 类和接口 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
- robot—如何调用上传文件的接口,表单传值
- java的jna电脑桌面背景_获取bing图片并自动设置为电脑桌面背景(使用 URLDownloadToFile API函数)...
- 使用 Scrapy + Selenium 爬取动态渲染的页面
- 关于source insight、添加.s和.S文件,显示全部路径、加入项目后闪屏幕
- XDOJ32角谷定理
- OpenCV-Python:图像的几何变换(平移、旋转、仿射变换等)
- 戴尔台式计算机怎么安装的,戴尔Dell电脑U盘安装台式机win10系统教程详解
- RHCSA之Linux系统简介