写在前面:
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)
运行结果“:
附上本人的联系方式,欢迎各位前来交流探讨!
版权声明:本文为博主原创文章,未经博主允许不得转载。如要转载请与本人联系