第1关:安装并使用Pandas

任务描述

本关任务:输出Pandas的版本号。

相关知识

在安装 Pandas 之前,确保你的操作系统中有 NumPy。如果你是从源代码直接编译,那么还需要相应的工具编译建立 Pandas 所需的C语言与 Cython 代码。详细的安装方法,请参考 Pandas官方文档 。如果你按照前言的建议使用了Anaconda,那么 Pandas 就已经安装好了。

平台已经安装Anaconda,所以不需要再安装Pandas库。

编程要求

本关的编程任务是补全右侧编辑器中的demo()函数,要求通过__version__查看Pandas当前版本号。

  • 具体要求请参见后续测试样例。

请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!

测试说明

平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。

测试输入: 无测试输入 预期输出: 0.23.0


开始你的任务吧,祝你成功!

代码:

import pandas as pddef demo():#将pandas的版本号赋值给version_number#********** Begin **********#version_number =pd.__version__#********** End **********#return  version_number

第2关:Pandas的Series对象

任务描述

本关任务:使用任意一个方法创建一个Series对象。

相关知识

PandasSeries对象是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维数组,可以用一个数组创建Series对象。

  1. In: data = pd.Series([0.25, 0.5, 0.75, 1.0])
  2. In: data
  3. Out: 0 0.25
  4. 1 0.50
  5. 2 0.75
  6. 3 1.00
  7. dtype: float64

从上面的结果发现Series对象将一组数据和一组索引绑定在一起,我们可以通过values属性和index属性获取数据,values返回的结果与Numpy数组类似,index返回结果是一个类型为pd.Index的类数组对象。

  1. In: data.values
  2. Out: array([ 0.25, 0.5 , 0.75, 1. ])
  3. In: data.index
  4. Out: RangeIndex(start=0, stop=4, step=1)

SeriesNumpy数组一样,数据可以通过Python的中括号索引标签获取。而且比Numpy数组更加通用、灵活。

  1. In: data[1]
  2. Out: 0.5
  3. In: data[1:3]
  4. Out: 1 0.50
  5. 2 0.75
  6. dtype: float64

创建Series对象

创建PandasSeries对象的方法:

pd.Series(data,index=index)

其中,index是一个可选参数,默认为np.arange(n)data参数支持多种数据类型。

Series是通用的Numpy数组

Series对象和一维Numpy数组基本可以等价交换,但两者间的本质差异其实是索引:NumPy数组通过隐式定义的整数索引获取数值,而PandasSeries对象用一种显式定义的索引与数值关联。 显式索引的定义让Series对象拥有了更强的能力。例如,索引不再仅仅是整数,还可以是任意想要的类型。

  1. In: data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd'])
  2. Out: a 0.25
  3. b 0.50
  4. c 0.75
  5. d 1.00
  6. dtype: float64
  7. In: data["b"]
  8. Out: 0.5

Series是特殊的字典

你可以把PandasSeries对象看成一种特殊的Python字典。字典是一种将任意键映射到一组任意值的数据结构,而Series对象其实是一种将类型键映射到一组类型值的数据结构。我们可以直接用Python的字典创建一个Series对象,让Series对象与字典的类比更加清晰。

  1. In: population_dict = {'California': 38332521,'Texas': 26448193, 'New York': 19651127, 'Florida': 19552860, 'Illinois': 12882135}
  2. In: population = pd.Series(population_dict)
  3. In: population
  4. Out: California 38332521
  5. Florida 19552860
  6. Illinois 12882135
  7. New York 19651127
  8. Texas 26448193
  9. dtype: int64

用字典创建 Series对象时,其索引默认按照顺序排列。典型的字典数值获取方式仍然有效,而且还支持数组形式的切片操作等。

  1. In: population['California']
  2. Out: 38332521
  3. In: population['California':'Illinois']
  4. Out: California 38332521
  5. Florida 19552860
  6. Illinois 12882135
  7. dtype: int64

编程要求

本关的编程任务是补全右侧上部代码编辑区内的相应代码,创建一个Series对象,并输出。

  • 具体要求请参见后续测试样例。

请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!

测试说明

平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。

测试输入中的第一行为Series对象中的列索引,第二行为Series对象中每一行的值。

测试输入: a,b,c,d,e,f 6,5,4,2,1,3

预期输出:

  1. a 6
  2. b 5
  3. c 4
  4. d 2
  5. e 1
  6. f 3
  7. dtype: object

开始你的任务吧,祝你成功!

代码:

import pandas as pda = input()   # 输入的是一个字符串,详细数据可查看测试集
b = input()# 使用任意方法创建一个Series对象,并输出#********* Begin **********#
c=a.split(",")
d=b.split(",")
data=pd.Series(d,index=c)
print(data)
#********* Begin **********#

第3关:Pandas的DataFrame对象

任务描述

本关任务:分别使用Series对象和字典类型数据创建一个DataFrame对象。

相关知识

Pandas的另一个基础数据结构是DataFrame。和上一节介绍的 Series对象一样,DataFrame既可以作为一个通用型NumPy数组,也可以看作特殊的Python字典。

创建DataFrame对象

PandasDataFrame对象可以通过许多方式创建,这里举几个常用的例子。

  • 通过数组创建:

    1. pd.DataFrame(array, index=list0, columns=list1) #list表示一个列表
  • 通过单个Series对象创建:
    1. pd.DataFrame(Series,columns=list)
  • 通过字典列表创建:
    1. data = [{'a': i, 'b': 2 * i} for i in range(3)] pd.DataFrame(data)

    DataFrame是通用的NumPy数组

    如果将Series类比为带灵活索引的一维数组,那么DataFrame就可以看作是一种既有灵活的行索引,又有灵活列名的二维数组,你也可以把DataFrame看成是有序排列的若干Series对象。这里的“排列”指的是它们拥有共同的索引index

    1. # 创建Series对象
    2. In: area_dict = {'California': 423967, 'Texas': 695662, 'New York': 141297, 'Florida': 170312, 'Illinois': 149995}
    3. In: population_dict = {'California': 38332521,'Texas': 26448193, 'New York': 19651127, 'Florida': 19552860, 'Illinois': 12882135}
    4. In: population = pd.Series(population_dict)
    5. In: area = pd.Series(area_dict)
    6. # 创建DataFrame对象
    7. In: states = pd.DataFrame({'population': population, 'area': area})
    8. In: states
    9. Out: area population
    10. California 423967 38332521
    11. Florida 170312 19552860
    12. Illinois 149995 12882135
    13. New York 141297 19651127
    14. Texas 695662 26448193

    Series对象一样,DataFrame也有一个index属性可以获取索引标签。另外,DataFrame还有一个columns属性,是存放列标签的Index对象。

    1. In: states.columns
    2. Out: Index(['area', 'population'], dtype='object')

DataFrame是特殊的字典

Series类似,我们也可以把DataFrame看成一种特殊的字典。字典是一个键映射一个值,而DataFrame是一列映射一个Series的数据。例如,通过area的列属性可以返回包含面积数据的Series对象。

  1. In: states['area']
  2. Out: California 423967
  3. Florida 170312
  4. Illinois 149995
  5. New York 141297
  6. Texas 695662
  7. 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 预期输出:

  1. first second
  2. 1 a b
  3. 2 aa bb
  4. 3 aaa bbb
  5. 4 aaaa bbbb
  6. 6 aaaaa bbbbb
  7. first second
  8. 1 a b
  9. 2 aa bb
  10. 3 aaa bbb
  11. 4 aaaa bbbb
  12. 6 aaaaa bbbbb

开始你的任务吧,祝你成功!

代码:

import pandas as pdindex = input()        # 输入的是一个字符串,用于列索引,详细数据请查看测试集
value1 = input()     # DataFrame对象的第一列数据
value2 = input()     # DataFrame对象的第二列数据# 将数据转换为Series对象  然后通过Series对象创建一个DataFrame对象,然后输出
#********** Begin **********#
data={'first':pd.Series(value1.split(','),index=index.split(',')),'second':pd.Series(value2.split(','),index=index.split(','))}
dp=pd.DataFrame(data)
print(dp)
#********** End **********## 将数据转换为字典,然后通过字典创建一个DataFrame对象,然后输出
#********** Begin **********#
data={'first':value1.split(','),'second':value2.split(',')}
dp=pd.DataFrame(data,index=index.split(','))
print(dp)#********** End **********#

第4关:Pandas的Index对象

任务描述

本关任务:获取两个Series对象的Index对象,然后求它们的并集和交集。

相关知识

从以上几个实训可以看出SeriesDataFrame对象都使用便于引用和调整的显式索引PandasIndex对象是一个很有趣的数据结构,可以将它看作是一个不可变数组有序集合(实际上是一个多集,因为Index对象可能会包含重复值)。

创建一个简单的Index对象:

  1. In: pd.Index([2, 3, 5, 7, 11])
  2. Out: Int64Index([2, 3, 5, 7, 11], dtype='int64')

将Index看作不可变数组

Index对象得许多操作都像数组。可以通过标准Python的取值方法获取数值,也可以通过切片获取数值。

  1. In: ind[1]
  2. Out: 3
  3. In: ind[::2]
  4. Out: Int64Index([2, 5, 11], dtype='int64')

Index对象还有许多与NumPy数组相似的属性。

  1. In: print(ind.size, ind.shape, ind.ndim, ind.dtype)
  2. Out: 5 (5,) 1 int64

Index对象与NumPy数组之间的不同在于,Index对象的索引是不可变的,也就是说不能通过通常的方式进行调整。

ind[1] = 0 # 这种操作是不可取的,会报错

将Index看作有序集合

Pandas对象被设计用于实现许多操作,如连接(join)数据集,其中会涉及许多集合操作。Index 对象遵循Python标准库的集合(set)数据结构的许多习惯用法,包括并集、交集、差集等。

  1. In: indA = pd.Index([1, 3, 5, 7, 9])
  2. In: indB = pd.Index([2, 3, 5, 7, 11])
  3. In: indA & indB # 交集
  4. Out: Int64Index([3, 5, 7], dtype='int64')
  5. In: indA | indB # 并集
  6. Out: Int64Index([1, 2, 3, 5, 7, 9, 11], dtype='int64')
  7. In: indA ^ indB # 异或
  8. Out: Int64Index([1, 2, 9, 11], dtype='int64')

这些操作还可以通过调用对象方法来实现,例如indA.intersection(indB)等。

编程要求

本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求获取两个Series对象的index对象,然后求交集与并集,并输出。

  • 具体要求请参见后续测试样例。

请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!

测试说明

平台会对你编写的代码进行测试,对比你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。

测试输入: 无测试输入 预期输出:

  1. 交集:Int64Index([1, 3, 4], dtype='int64')
  2. 并集:Int64Index([1, 2, 3, 4, 5, 6, 22, 66], dtype='int64')

开始你的任务吧,祝你成功!

代码:

import pandas as pddef demo4():data1 = pd.Series([1,2,3,4,66])data2 = pd.Series([1,22,3,4,5,6])# 获取两个Series对象的index对象,然后求交集与并集,并输出#********** Begin **********#d1=pd.Index(data1)d2=pd.Index(data2)a=d1 & d2b=d1 | d2print(f'交集:{a}')print(f'并集:{b}')#********** Begin **********#return

Pandas安装与对象使用(educoder)相关推荐

  1. Pandas包(一):Pandas入门与对象的创建查看

    Pandas 概览 Pandas 是 Python 的核心数据分析支持库,提供了快速.灵活.明确的数据结构,旨在简单.直观地处理关系型.标记型数据 注:Pandas适合处理结构化数据,即适合处理的维度 ...

  2. Pandas 安装与教程

    前言 Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.BSD 许可的库,提供高性能.易于使用的数据结构和数据分析工具. Pandas 名字衍生自术语 ...

  3. pandas中DataFrame对象to_csv()方法中的encoding参数

    当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...

  4. [转载] Pandas:DataFrame对象的基础操作

    参考链接: 创建一个Pandas DataFrame DataFrame对象的创建,修改,合并 import pandas as pd import numpy as np 创建DataFrame对象 ...

  5. 已解决pandas创建DataFrame对象失败

    已解决(pandas创建DataFrame对象失败)ValueError: Shape of passed values is (1509, 1), indices imply (1509, 2) 文 ...

  6. ACCESS MDB数据库“对象的必要权限。请让管理员或安装此对象的人为你设置适当的权限”解决办法

    前几天在搞一个MDB数据库的时候提示对象的必要权限.请让管理员或安装此对象的人为你设置适当的权限,在网上搜索了很多办法都不OK,最后摸索加谷歌,百度终于解决问题了,猜想很大大黑阔在搞MDB数据库的时候 ...

  7. Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意思?

    Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意义? 通常来说:axis = 0代表行, axis=1代表列. 一.从删除操作来看axis: 举个 ...

  8. Pandas创建DataFrame对象的几种常用方法

    DataFrame是pandas常用的数据类型之一,表示带标签的可变二维表格.本文介绍如何创建DataFrame对象,后面会陆续介绍DataFrame对象的用法. 首先,使用pip.conda或类似工 ...

  9. Pandas 时间序列 - DateOffset 对象

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 国亡身殒今何有,只留离骚在世间. ...

最新文章

  1. 1、SELECT:数据表查询语句
  2. 一文看尽7篇目标跟踪最新论文(ABCTracker/MAST/L1DPF-M等)
  3. 用java的stream流库在实际项目的使用案例
  4. 关于字节对齐以及内存占用
  5. php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中
  6. numpy.reshape(与ndarray.reshape一样)使用方法
  7. jfreechart createBarChart 去掉立体感
  8. ubuntu10.10和windows双系统启动顺序的修改(转)
  9. c# emnu 获取注释_C#机器学习之判断日报是否合格
  10. pygame 安装方法
  11. 怎么快速学习App后台开发
  12. matlab试算求解二元二次方程,matlab 求一个二元二次方程组的解
  13. CodeForces 711C Coloring Trees (三维DP)
  14. DigitalPersona 指纹仪的使用
  15. java我的世界填充方块,【我的世界手游如何快速填充方块】我的世界MC中如何快速填满一个平面的方块...
  16. C++图书馆管理系统 详细代码
  17. js实现 MD5加密
  18. fsl左右海马体分割+freesurfer合并
  19. html5属性单词,在Html5 中word-wrap属性用于实现长单词和URL地址的自动换行。( )
  20. 练习基础素描也有技巧,衬布光线角度等关键点.....

热门文章

  1. paho.mqtt.c简单介绍
  2. 网卡驱动如何设置组播MAC地址
  3. [ 树状数组 ] BZOJ5170
  4. 服务器系统用什么安全软件哪个好用吗,服务器安全软件哪个好用
  5. 进原神显示服务器错误黑屏,原神黑屏有声音怎么解决
  6. C语言字符串查找位置
  7. HTB-Brainfuck
  8. [CTO俱乐部第47期]IT外包人员归属感低 工作多超不过15个月
  9. minecraft1.16种子JAVA版_我的世界Java1.16.1版本水下要塞种子分享
  10. 本周知识分享会议总结