Pandas库中的Series结构

写在前面:  

  Pandas(数据分析处理库)代码大全中,用pandas.read_csv(“文件名”)的方法读取文件,返回的变量类型为DataFrame结构(pandas核心类型)。今天我们来学习pandas的另一结构:Series结构(DataFrame结构的子结构)。

       Series对象可以理解为由一列索引和一列值,共两列数据组成的结构。而DataFrame就是由一列索引和多列值组成的结构,其中,在DataFrame中的每一列都是一个Series对象。

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

       本文中用到的数据集为fandango_score_comparison.csv,若有需要,在留言区留言即可获得。

一、查看类型

#导包
import pandas as pd

#读取文件
fandango = pd.read_csv('fandango_score_comparison.csv')
#返回变量fandango的类型为DataFrame类型
print("fandango的类型为:" , type(fandango))               

#读取数据
series_film = fandango['FILM']
#返回变量series_film的类型为Series类型
print ("series_film的类型为:",type(series_film))

运行结果:

二、Series类型的变量拥有的操作

 2.1  读取文件中特定行位置的数据

#series_film既可以使用DataFrame结构的操作,也可以使用Series结构的操作

#series_film作为DataFrame结构
#可以调用loc函数获取特定行的数据
#print (series_film.loc[2])
#print (series_film.loc[2:5])
#print (series_film.loc[[1,5,7]])

#series_film作为Series结构
#可以直接获取特定行的数据(不需要调用函数)
#print (series_film[2])
print (series_film[2:5])
#print (series_film[[1,5,7]])

运行结果:

2.2  .value函数:索引值index为数字

A.  不指定values的索引值

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

#Series的values操作

#1.不指定values的索引值
#取"FILM"这列数据
series_film = fandango["FILM"] 
print("series_film的类型为:",type(series_film))

#.values:取得series_film对应的数据(电影名)
film_name = series_film.values  
print("file_name的类型为:",type(film_name))

print("film_name = ",film_name)

运行结果:

总结:

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

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

B.  指定values的索引值

#2.指定values的索引值
film_name_three = series_film.values[3]
print(film_name_three) 

运行结果:

 2.3  Series()函数:索引值index为字符串

#Series()函数:索引值index为字符串

#取"FILM"电影名字这列数据
series_film = fandango["FILM"] 
#取"RottenTomatoes"评分网站这列数据
series_rt = fandango["RottenTomatoes"]                  

#不指定values的索引值(取Series中所有的数据)
#film_name:电影名中的数据           
film_name = series_film.values 
#rt_scores:评分的数据
rt_scores = series_rt.values                            

#Series()函数:将电影名字与网站的评分拼在一起造一个Series(相当于建立一种映射关系)
series_custom = Series(rt_scores, index = film_name) 
#返回series_custom的类型
print("series_custom:",type(series_custom))    
print("-----------------------------------------------------")

#返回Series类型的第一行:string类型的index
print(series_custom[["Avengers: Age of Ultron (2015)"]])
print("-----------------------------------------------------")

#设置成Series之后,同样还是可以用int类型的值来当索引
#返回Series类型的第一行:int类型的index
print(series_custom[[0]])
print("-----------------------------------------------------")

#返回series_custom的前三行
print(series_custom[0:3])   

运行结果:

由运行结果得,组合成的series_custom类型还是Serise类型的,并且Series的索引可以是int类型的,也可以是String类型的。

2.4  按Series的index进行排序

A.  .tolist()-->.sorted()-->.reindex()函数

#按Series的index进行排序
#法一:tolist()-->.sorted()-->.reindex()函数

#.tolist()函数:将索引(film_name)转换为列表list类型
#步骤1.把series_custom的index取出来,并转换成列表list类型
original_index = series_custom.index.tolist()              
#print(original_index)

#步骤2.对index列表进行排序
sorted_index = sorted(original_index)                      
print(sorted_index) 

#步骤3.将排好序的sorted_index放回到series_custom中
sorted_by_index = series_custom.reindex(sorted_index)      
#print(sorted_by_index)

运行结果:

原始的index列表

排序后的index列表

重新置换了index后的数据

B.  .sort_index()函数

#法二:.sort_index()函数
sc2 = series_custom.sort_index()          
print(sc2)

运行结果:

2.5  按Series的值进行排序

.sort_values() 函数 

#按Series的值进行排序
sc3 = series_custom.sort_values()         
print(sc3)

运行结果:

 2.6  对Sercies的add(),sin(), max()操作

#将Series和numpy混合起来用
#对Series的值进行运算操作,索引值index不变

import numpy as np

#.add()函数
print(np.add(series_custom,series_custom))    
print("----------------------------------------------------")

#sin()函数
print(np.sin(series_custom))
print("----------------------------------------------------")

#max()函数
print(np.max(series_custom))

运行结果: 

add()的结果

求sin()的结果

求max()

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

#输出serise_custom中评分>50且<75的电影

#Series进行大小判断:判断的是Series中的值,返回的结果是True或Fales
criteria_one = series_custom > 50           
criteria_two = series_custom < 75
#print(criteria_one)

both_criteria = series_custom[criteria_one & criteria_two]    #抽选出>50,<75的数据
print(both_criteria)

运行结果:

2.8  Series结构之间的运算(具有相同index)

原始的数据:

#Series结构之间的运算(具有相同index)

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

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

运行结果“:

附上本人的联系方式,欢迎各位前来交流探讨!

版权声明:本文为博主原创文章,未经博主允许不得转载。如要转载请与本人联系

猜你喜欢

转载自blog.csdn.net/weixin_39549734/article/details/81127690
今日推荐