小丸子踏入python之路:python_day06(Pandas库中另外一个结构Series)

写在前面:  

  由昨天的记录我们知道,用pandas.read_csv(“文件名”)的方法读取文件,返回的变量类型为DataFrame结构。也是pandas中最核心的一种类型。那在pandas中还有没有什么其他的类型啊,当然是有的啦,我们把DataFrame类型理解为是由行和列构成的数据,那么将DataFrame进行分解,取其中的一行或者一列,则这其中的一行或一列被称为Series结构。

  即DataFrame结构是由一系列的Series结构构成的。

(将DataFrame理解为读取到的矩阵,那么Series则认为是矩阵的一行或一列)

  Series(collection of values)
  DataFrame(collection of Series objects)

用代码的形式直接感受一下类型吧:

#数据集是一个关于电影的评分

import pandas as pd

fandango = pd.read_csv("fandango_score_comparison.csv")  #用pd.read_csv()读取关于电影评分的数据,并将其赋给一个变量fandango
print("fandango的类型为:" , type(fandango))               #返回变量fandango的类型为DataFrame类型

series_film = fandango["FILM"]                           #对fandango取其中名为“FILM”的一列,赋值给变量series_film
print("series_film的类型为: ", type(series_film))         #返回变量series_film的类型为Series类型

运行结果:

一、关于Series的操作

1. 直接用切片取Series的特定数据

series_film = fandango["FILM"]                           #对fandango取其中名为“FILM”的一列,赋值给变量series_film
print(series_film[0:4])                                  #打印series_film数据的前4行

print("-------------------------------------------")
series_rt = fandango["RottenTomatoes"]                   #取这个评分网站的评分
print(series_rt[0:4])

运行结果:

2.取series类型的数据的一个value值会是什么类型呢?

  在上边我们知道,取DataFrame类型的数据的一行或者一列会是Series类型,那么如果取一下Series的Values会得到什么类型的数据呢?

from pandas import Series

series_film = fandango["FILM"]            #取"FILM"这列数据
film_name = series_film.values         #用.values取得series_film对应的数据(电影名)
print("film_name = ",film_name)
print("file_name的类型: ",type(film_name))

运行结果:

即:DataFrame里的结构是Series,而Series里的结构又是ndarray。

  Pandas是封装在NumPy之上的,很多的操作都是Numpy操作的组合。

   也可以指点values的index来去特定的一个Series的一个值。

film_name_one = series_film.values[1]
print(film_name_one)                      #当然也可以打印电影名中指定index的那个值了

运行结果:

3.造一个新的Series,并用Stirng类型的index调用数据

#自己造一个series
from pandas import Series

series_film = fandango["FILM"]                           #取"FILM"这列数据
series_rt = fandango["RottenTomatoes"]                   #取这个评分网站的评分

film_name = series_film.values                           #film_name变量是电影名中的数据
rt_scores = series_rt.values                             #rt_scores变量是评分的数据

series_custom = Series(rt_scores, index = film_name)          #将电影名字与RottenTomatoes网站的评分拼在一起造一个Series
print("重新组合的series_custom的类型 = ",type(series_custom))    #返回series_custom的类型
print("-------------------------------------------------------------------------------")
print(series_custom[0:3])                                     #用切片[0:3]返回series_custom的前三行

print("-------------------------------------------------------------------------------")
print("用series_custom[[0]] = " ,series_custom[[0]])          #用int型的index返回Series类型的第一行
print("用series_custom[[\"Avengers: Age of Ultron (2015)\"]] = ", series_custom[["Avengers: Age of Ultron (2015)"]])
                                                        #用string类型的index依然能够返回Series类型的第一行

运行结果:

  从运行结果上看,组合成的series_custom类型还是Serise类型的,并且用index = [0]和用 index = "Avengers: Age of Ultron (2015)"返回的数据相同,说明Series的索引不单单可以是int类型的,还可以是String类型的。

4.Series的排序.sort()

4.1

original_index = series_custom.index.tolist()              #打印series_custom这个Series类型的索引列表
print(original_index)
print("---------------------------------------------------------------")
sorted_index = sorted(original_index)                      #对series_custom的索引列表进行排序
print(sorted_index) 

sorted_by_index = series_custom.reindex(sorted_index)      #为重新排序后的数据置换新的index
print(sorted_by_index)

运行结果:

原始的index列表

排序后的index的列表

重新置换了index后的数据

4.2 按不同方式进行排序

sc2 = series_custom.sort_index()          #按照series_custom的索引排序
print(sc2[0:5])
print("-------------------------------------------")
sc3 = series_custom.sort_values()         #按照series_custom的值排序
print(sc3[0:5])

运行结果:

5.对Sercies的add(),sin(), max()操作

#.add()两个Series相加
import numpy as np
print(np.add(series_custom,series_custom))    #维度相同分别相加
print("----------------------------------------------------")
#对每一个值使用sin()函数
print(np.sin(series_custom))
print("----------------------------------------------------")

#返回最大值
print("max(series_custom) = ",np.max(series_custom))

运行结果:

add()的结果

求sin()的结果

求max()

6. 输出serise_custom中评分>50,<75的电影

criteria_one = series_custom > 50           #返回的结果是True或Fales
criteria_two = series_custom < 75
#print(criteria_one)
both_criteria = series_custom[criteria_one & criteria_two]    #抽选出>50,<75的数据
print(both_criteria)

运行结果:

7.具有相同index的两个Series结构之间的运算

  先生成两个新的Series(与之前的series_custom相同概念),然后两个series具有相同的index,就可以进行运算。

  这里的两个Series的index都是“FILM”(电影名),而values值是两个不同的评分网站的评分。

原始的数据:

#生成两个新的Serise,index相同,都是“FILM”, values是两个网站各自的评分
rt_critics = Series(fandango["RottenT,omatoes"].values, index = fandango["FILM"])
rt_users = Series(fandango["RottenTomatoes_User"].values, index = fandango["FILM"])

rt_mean = (rt_critics + rt_users)/2    #两个series的index相同,可以对其操作
print(rt_mean)

运行结果“:

8. 对DataFrame类型set_index()(指定索引)

#将返回一个新的Dataframes,它由指定列中的值进行索引,并将从DataFrame中删除该列,而不删除FILM列
fandango = pd.read_csv("fandango_score_comparison.csv")
print(type(fandango))                         #读文件并赋值给一个变量,打印这个变量类型,为DataFrame类型
fandango_films = fandango.set_index("FILM",drop = False)      #用.set_index()对DataFrame指定索引“FILM”
print(fandango_films.index)       

运行结果:

9.索引的切片可以是[1:5]这种类型,也可以是["str":"str"]类型

#索引的切片不单单可以只是数值型的,还可以是string类型的
fandango_films["Avengers: Age of Ultron (2015)" : "Hot Tub Time Machine 2 (2015)"]
#fandango_films.loc["Avengers: Age of Ultron (2015)" : "Hot Tub Time Machine 2 (2015)"]

运行结果:

原文地址:https://www.cnblogs.com/qtww56/p/8732854.html

时间: 2024-10-08 08:58:59

小丸子踏入python之路:python_day06(Pandas库中另外一个结构Series)的相关文章

小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)

泰坦尼克船员获救数据: titanic_train.csv 用excel打开数据集.显示如下: 写在前边: 为了方便以后运用numpy和pandas的库,分别造它们的别名np和pd. import pandas as pd #造pandas的别名为pd import numpy as np #造numpy的别名为np 一.读取数据 import pandas as pd #造pandas的别名为pd import numpy as np #造numpy的别名为np #泰坦尼克号船员获救数据 ti

Pandas库中的DataFrame

1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matlab也可以用cell存放多类型数据),DataFrame的单元格可以存放数值.字符串等,这和excel表很像. 同时DataFrame可以设置列名columns与行名index,可以通过像matlab一样通过位置获取数据也可以通过列名和行名定位,具体方法在后面细说. 2 创建DataFrame 首先声

python之路-利用索引切片功能做一个简易的两个未知数的加法计算器,代码如下:

python之路-利用索引切片功能做一个简易的两个未知数的加法计算器,代码如下: #content = input('请输入内容:'),如用户输入:5 +9或 5 + 9 等,然后进行分割再进行计算. content = input('>>>').strip() #content 等于所输入的内容,strip:删除字符串左右两边的空格. index = content.find('+') ''' content内容中的两边的空格都删除了,但中间还有,现在我们只需要定位已知内容是加法,两边

mysql 如何将一个库的一个表的数据复制到另一个库中的一个表

insert   库2..表2   select   字段1,字段2   from   库1..表1 where 条件 https://www.cnblogs.com/banruo/archive/2010/09/07/1820285.html 如果 库 中没有这个表 Create table Table2 (Select * from Table1); https://blog.csdn.net/wangluo605/article/details/82289209 原文地址:https://

【python】详解pandas库的pd.merge函数

本篇详细说明merge的应用,join 和concatenate的拼接方法的与之相似. pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) 参数如下: left: 拼接的左侧Da

python从淘宝ip库中获取公网ip的信息

看到一个题目:  从ip.taobao.com中获取公网ip的信息 分析: 1.生成公网IP地址: 2.根据ip.taobao.com返回的代码,用json解析 下面是淘宝的接口说明 ''' 接口说明 1. 请求接口(GET): http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 2. 响应信息: (json格式的)国家 .省(自治区或直辖市).市(县).运营商 3. 返回数据格式: {"code":0,"data&q

Git如何删除版本库中的一个提交?

 如果不小心增加了一个最新的提交,可以通过以下的操作删除,记住:是删除最新的提交,如果回滚到其他的提交上面,就会导致之后的全部消失. 1.git reset --hard HEAD~1    2.git push --force

maven无法下载私有库中的jar包

前两天同事遇到一个问题: 同一个工程,依赖私有库中的一个jar包,其他同事的项目都能成功下载,但只有他的项目无法正常下载依赖,最后虽然找到原因了,但还是在这里备注一下: 1.maven依赖管理 maven通过GAV坐标对项目依赖进行管理,如果有公司内部有私有库存在的话,依赖查找的顺序是这样的:本地仓库-->私有仓库-->中央仓库(这是没有配置mirror拦截的情况):如果在setting中配置了mirror,且mirrorOf配置为*,url指向私有库路径,则查找顺序是这样的本地仓库-->

Arduino下LCD1602综合探究(中)——如何减少1602的连线,LiquidCrystal库,LiquidCrystal库中bug的解决方法

一.前言: 上文中,笔者系统的阐述了1602的两种驱动方式,并简单的提到了Arduino的LiquidCrystal库.本文紧接上文,对以下两个问题进行更加深入的探讨:如何能够使1602对Arduino的端口占用降到最少?LiquidCrystal库到底应该如何学习?在Arduino下LCD1602综合探究(下)中,笔者拟介绍一个1602的综合性实验,以期对前文的内容加以综合应用和总结.闲话少说,下面开始进入正文. 二.减少1602对Arduino的端口占用 <1>不使用I2C 在上文中,笔者