机器学习——Pandas库

上一篇文章中的numPy库是一个关于矩阵运算的库,而这个Pandas库是一个数据处理的库。
一般的,我们在拿到一堆数据时,这些数据并不一定是完整的、无错误的,所以我们需要对数据进行预处理,让它能够更好地满足建模的需求。其实Pandas在做预处理时,是基于numPy,如果numPy需要3、4行能解决的事,也许Pandas一个函数就能解决。

这里有一些Pandas库的基本函数:https://blog.csdn.net/claroja/article/details/65449494

读文件
Pandas本身就是用来读取文件数据的,那么现在有一个文件,我将它读进来。

import pandas as pd

food_info=pd.read_csv("food_info.csv")  #读文件
print(type(food_info))
print("-----------------------")
print(food_info.dtypes)

运行结果:
在这里插入图片描述
从上图我们可以知道,numPy的数据类型是ndarry,而pandas是一个dataframe。并且,在pandas中,一个字符型数据,它会把它表示成“object”类型,object类型相当于string类型,所以不用太过纠结。如下图:
在这里插入图片描述

显示部分数据
可以使用.head()或.tail()方法读取n行数据,而且会自动给每行数据进行标号。

food_info=pd.read_csv("food_info.csv")  #读文件
print("默认显示前5行:\n",food_info.head())
print("-----------------------")
print("显示前3行:\n",food_info.head(3))
print("-----------------------")
print("显示后3行:\n",food_info.tail(3))

运行结果:
在这里插入图片描述

取出所有的列名

food_info=pd.read_csv("food_info.csv")  #读文件
print(food_info.columns)

运行结果:
在这里插入图片描述

查看维度

food_info=pd.read_csv("food_info.csv")  #读文件
print(food_info.shape)

运行结果:
在这里插入图片描述
这说明了当前的样本有8618行,36列。

索引号取数据
pandas不像numPy中那样直接food_info[0]就可以取数据,在pandas中需要使用food_info.loc[0]来取数据。“0”表示第一行数据(不含列名)或者是第一条数据,它会显示列名。

food_info=pd.read_csv("food_info.csv")  #读文件
print(food_info.loc[0])   #取数据第1行

运行结果:
在这里插入图片描述
我们来看看是不是取得第一条数据。在csv文件中查看:
在这里插入图片描述
可以看到,确实是取出来第一条数据,每条数据对应的列名也取了出来。

索引号切片取数据

food_info=pd.read_csv("food_info.csv")  #读文件
print(food_info.loc[3:4])   #取数据第4-5行,也就是索引号3-4

运行结果:
在这里插入图片描述

当然,也可以单独取某些值

food_info=pd.read_csv("food_info.csv")  #读文件
#print(food_info.loc[3:4])   #取数据第4-5行,也就是索引号3-4
print("-----------------------------------")
print(food_info.loc[[2,5,8]])   #取数据第3,6,9行,也就是索引号2,5,8

运行结果:
在这里插入图片描述

取某一列的数据
一般情况下,pandas会默认为第一行是列名。所以,我们可以通过输入列名名称来获取该列数据。

food_info=pd.read_csv("food_info.csv")  #读文件
name_row=food_info["NDB_No"]    #列的列名
print(name_row)

运行结果:
在这里插入图片描述
我们来看看csv文件:
在这里插入图片描述
可以看到,确实已经被读取出来了…

取某n列的数据
当然,也可以取某n列的数据。
这里我取前两列的数据:

food_info=pd.read_csv("food_info.csv")  #读文件
data_row=food_info[["NDB_No","Shrt_Desc"]]    #列的列名
print(data_row)

运行结果:
在这里插入图片描述

我们来看看csv文件的前两列:
在这里插入图片描述
可以看到,前两列数据确实已经被取了出来,并且pandas还给每行数据标了索引号。

特殊数据列的数据
有这么一个情况,在我的csv文件中有这些列名:
在这里插入图片描述
它们是以"g"或"mg"为单位的列数据。现在我想要取出以“g”为单位的所有数据列,怎么做呢?

food_info=pd.read_csv("food_info.csv")  #读文件
col_names=food_info.columns.tolist()   #取数据的每一列的列名,把它放进List数组中
print(col_names)
print("-------------------------------")
g_col_names=[]
for i in col_names:
    if i.endswith("(g)"):    #以"(g)"结尾的列名
        g_col_names.append(i) #追加到g_col_names数组中
print(g_col_names)

print("-------------------------------")
head_data_3=food_info[g_col_names].head(3)
print(head_data_3)    #只打印数据前三行

运行结果:
在这里插入图片描述

数据换算
我的csv文件中有这么一列(它是以“mg”结尾):
在这里插入图片描述
我现在要把它换算成以“g”结尾的。我们知道,1000mg=1g,所以,这相当于该列的每行数据都要除以1000。
代码如下:

food_info=pd.read_csv("food_info.csv")  #读文件
mg_convertto_g=food_info["Calcium_(mg)"]/1000
print(mg_convertto_g)

运行结果:
在这里插入图片描述
对比csv中的数据,该列每行数据都被除以了1000。

n列对应加减乘除运算及增加一列操作
pandas中,可以直接对那两行数据进行加减乘除,也可以直接增加新的一列数据。当然了,前提是两列的维度一样。

food_info=pd.read_csv("food_info.csv")  #读文件
add_data=food_info["Ash_(g)"]+food_info["Carbohydrt_(g)"]  #两列相加
print(add_data.head(3))     #显示前三行数据
print("----------------------------------------")
print("初始的维度:\n",food_info.shape)
mg_convertto_g=food_info["Calcium_(mg)"]/1000 #把这列所有数据除以1000 
food_info["mg_convertto_g"]=mg_convertto_g   #增加新的一列数据
print("现在的维度:\n",food_info.shape)

运行结果:
在这里插入图片描述
看看csv文件:
在这里插入图片描述
这两列的前三行数据相加确实一样。而新加了一列之后的维度也有所改变。

某列最大值查找及归一化
numPy中我们可以进行最大值最小值查找,而在pandas中,唐可以进行最大值或最小值查找。
同时,我们还对该列进行归一化处理:每行数据/最大数据

food_info=pd.read_csv("food_info.csv")  #读文件
Max_data5=food_info["Sugar_Tot_(g)"].head(5).max() #取前5行最大值
print("前5行最大值:\n",Max_data5)
print("-------------------------------------------------")
Max_data_all=food_info["Sugar_Tot_(g)"].max()  #取该列所有数据中的最大值
normalize_data_all=food_info["Sugar_Tot_(g)"]/Max_data_all  #归一化处理
print(normalize_data_all)

运行结果:
在这里插入图片描述
我在这里取了该列前5行中的最大值,是为了好验证,查看csv文件:
在这里插入图片描述
可以看到,前5行最大值确实是0.51…
注意:NaN在pandas中被认为是缺失值或者打印不出来的值。

缺失值查找与统计
接下来我主要用泰坦尼克号人员获救预测”的数据集:titanic_train.csv来进行数据处理操作。当然了,这是一个真实的数据集…
(如果该数据集中某一列如果缺失值较多,那么这一列就不能作为特征列进行数据分析与处理。)
titanic_train.csv,它的数据在jupyter notebook中显示是这样的:
在这里插入图片描述
这里记录一下pyCharm与jupyter notebook的区别:
对于一个数据集来说,最直观的是pyCharm输出打印时会有缩减,对于横向数据较多的部分,会用省略号来隐藏。而notebook就不同了,它显示的数据较多,如上图所示。而pyCharm则不会,同样的代码,在pyCharm中的显示结果为:
在这里插入图片描述
甚至在notebook中有时候不需要写print(),写了print()反而会有点问题。所以,为了更好地显示数据,这一段代码,我在jupyter notebook中打印:

import pandas as pd
import numpy as np

titanic_data=pd.read_csv("titanic_train.csv")  #读文件

titanic_data.head(10)

显示结果:
在这里插入图片描述
通过上图可以看到,“Age”那一列有缺失值(当然其余列也有),这里用这一列查找和统计缺失值。所谓的缺失值,在pandas中以NaN表示,但在csv文件中表示的是空字符。

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
#print(titanic_data.head())
age=titanic_data["Age"]
age_null=pd.isnull(age)  #使用pandas中的空判断函数判断这一列,如果为空,会返回True
print(age_null)
#统计该列的缺失值个数
count_null=len(age[age_null])  #查找的True可以作为索引
print("缺失值个数:\n",count_null)

在这里插入图片描述
在这里插入图片描述

求均值(在缺失值存在的条件下)
接上面,如果缺失值存在,怎么去求得该列的平均年龄呢?
1、当缺失值存在且不处理的情况下:

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
avg=sum(titanic_data["Age"])/len(titanic_data["Age"])
print("平均年龄:\n",avg)

运行结果:
在这里插入图片描述
当有缺失值存在时,结果根本没法计算出来。
2、当缺失值存在且处理的情况下:

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
age_null=pd.isnull(titanic_data["Age"]) #使用pandas中的空判断函数判断这一列,如果为空,会返回True
good_age=titanic_data["Age"][age_null==False]  #查找出这一列的缺失值为False的数据
avg=sum(good_age)/len(good_age)
print("平均年龄:\n",avg)

运行结果:
在这里插入图片描述
3、使用内置函数处理缺失值及求均值:

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
good_age=titanic_data["Age"].mean() #均值,会自动忽略缺失值
print("平均年龄:\n",good_age)

运行结果:
在这里插入图片描述
不过以上的数据预处理去掉缺失值的方法并不是很好,通常会使用均值、中位数等来替换缺失值。
这里使用一个叫做fillNa()的函数进行替换:

titanic_data.fillna(good_age,inplace=True)#把NaN用平均值填充
print(titanic_data["Age"].head(6))

初始结果:
在这里插入图片描述
运行结果:
在这里插入图片描述

求对应舱位的均值
“Pclass”表示船上的舱位,1,2,3分别表示“一等舱”、“二等舱”、“三等舱”,“Fare”表示每个舱位对应的价格。
在这里插入图片描述
现在求每个舱位对应的均值:

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
Pclass_Tick=titanic_data.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)
'''
.pivot_table(透视表)方法里面可以填写三个值,index表示统计的数据以谁为基准,
values表示关系,相当于x与y之间的关系。aggfunc是一个方法,求它们对应的均值,当然,也可以不写,默认为求均值
'''
print(Pclass_Tick)

运行结果:
在这里插入图片描述
当然,也可以多个数据进行操作。在csv文件中,“Embarked”表示人员上船的码头,“Fare”表示船票价格,“Survived”表示是否是幸存者。

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
one_both=titanic_data.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)
print(one_both)

在这里插入图片描述

去掉NaN值
之前我们可以替换NaN的值,现在我们可以去掉NaN的值,为了显示清楚,这一段代码在notebook中运行。

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
td=titanic_data.dropna(axis=0,subset=["Age","Survived"])
td.head(8)

初始结果:
在这里插入图片描述
上图中,可以看到索引标号为5的这一行有NaN。
运行结果:
在这里插入图片描述
可以看到,索引标号为6的这一行因为有NaN值,所以被去掉了。

重新排序
以某一列进行重新排序:

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
new_titanic_date=titanic_data.sort_values("Age",ascending=False) #以年龄进行降序排序
print(new_titanic_date)

运行结果:
在这里插入图片描述
可以看到,表格确实根据年龄降序进行了重新排序,但是,索引却没有发生变化,我想让索引也重新标号,以0,1,2,…这样开始。这里就要用到reset_index()函数了。

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
new_titanic_date=titanic_data.sort_values("Age",ascending=False) #以年龄进行降序排序

reset_index=new_titanic_date.reset_index(drop=True)  #drop=True表示原来的不要了,直接新建一个
print(reset_index.loc[0:9])   #切片取数据也可以

在这里插入图片描述
上面两个图作比较,只有索引发生了改变。

自定义函数查找缺失值

titanic_data=pd.read_csv("titanic_train.csv")  #读文件
def NaN_search(column):
    null_bool_data=pd.isnull(column)
    NaN_data=column[null_bool_data]
    return len(NaN_data)

count_NaN=titanic_data.apply(NaN_search)  #调用该函数,统计NaN个数
print(count_NaN)

运行结果:
在这里插入图片描述

Series结构

pandas中读取的数据结构式DataFrame,也就是一个矩阵,而Series也是一个数据结构,它表示矩阵中的一行或是一列。
现在我有这么一张数据集:
在这里插入图片描述
它是一个国外电影的评分数据,具体什么意思不用管它,我们也不熟。

Series数据结构
我们现在来看一看Series是不是DataFrame中的一行或一列:

fandango=pd.read_csv("fandango_score_comparison.csv")
film=fandango["FILM"]
print(type(film))

运行结果:
在这里插入图片描述
可以看到,我们读取了文件里的一列数据,打印出来的数据结构是Series,所以,Series是DataFrame中的一行或一列。
那么,现在,我进行如下操作,把“FILM”中的每一个值取出来:

fandango=pd.read_csv("fandango_score_comparison.csv")
film=fandango["FILM"]
print(type(film))
film_names=film.values  #取出film这一列中的每一个值
print(type(film_names))

运行结果:
在这里插入图片描述
可以看到,这些值的结构式ndarray,所以,Series包含ndarray,它们之间的关系如下:ndarray∈Series∈DataFrame。也就是说,pandas是封装在numPy的基础之上的。

Series索引操作
之前我们用索引的时候,几乎都是数字0,1,2,3… ,那么,可不可以用字符串当做索引呢?当然可以。

from pandas import Series   #创建Series需要导入Series
fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
film=fandango["FILM"]
film_names=film.values  #取出film这一列中的每一个值
# print(film_names)
score_Ro=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
series_custom=Series(score_Ro,index=film_names)   #用电影名当成一个索引
print(series_custom[["Ant-Man (2015)","Cinderella (2015)"]])  #打印这两个电影对应的评分
print("---------------------------------")
five_ten=series_custom[5:10]        #也可以不指定电影名,打印索引5——10的数据
print(five_ten)

运行结果:
在这里插入图片描述

Series排序操作

from pandas import Series
fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
film=fandango["FILM"]
film_names=film.values  #取出film这一列中的每一个值
score_Ro=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
series_custom=Series(score_Ro,index=film_names) #用电影名当成一个索引
list_index=series_custom.index.tolist()   #把电影名当成索引放进数组
sort_index=sorted(list_index)
reIndex=series_custom.reindex(sort_index)  
print(reIndex)

运行结果:
在这里插入图片描述

Series算平均值

from pandas import Series
fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
film=fandango["FILM"]
film_names=film.values  #取出film这一列中的每一个值
score_Ro1=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
score_Ro2=fandango["RottenTomatoes_User"].values   #取出fandango["RottenTomatoes_User"]中的每一个值
series_custom1=Series(score_Ro1,index=film_names) #用电影名当成一个索引
series_custom2=Series(score_Ro2,index=film_names) #用电影名当成一个索引
series_avg=(series_custom1+series_custom2)/2   #求两个媒体对这部电影的评分,取均值
print(series_avg)

运行结果:
在这里插入图片描述

**

DataFrame

**
DataFrame当索引取数据
Series可以进行字符串当索引,那么,DataFrame能不能呢?

fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
fandango_index=fandango.set_index("FILM",drop=True)  #设置电影名当成索引,drop=True表示原来的不要了,直接新建一个
cut_data=fandango_index["Avengers: Age of Ultron (2015)":"Hot Tub Time Machine 2 (2015)"]
print(cut_data)

运行结果:
在这里插入图片描述
注意:字符串要做索引,需要.set_index()操作之后才可以。

这里放下本章所讲的所有源码:
(需要哪章将注释去掉即可)

import pandas as pd
import numpy as np


#--------------------------读文件-------------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# food_info=pd.read_csv("food_info.csv")  #读文件
# print(type(food_info))
# print("-----------------------")
# print(food_info.dtypes)
# print("-----------------------")

#-------------------------显示部分数据--------------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# print("默认显示前5行:\n",food_info.head())
# print("-----------------------")
# print("显示前3行:\n",food_info.head(3))
# print("-----------------------")
# print("显示后3行:\n",food_info.tail(3))
# print(food_info.columns)

#-------------------------查看维度--------------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# print(food_info.shape)

#-------------------------索引号取数据---------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# print(food_info.loc[0])   #取数据第1行

#-------------------------索引号切片数据---------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# #print(food_info.loc[3:4])   #取数据第4-5行,也就是索引号3-4
# print("-----------------------------------")
# print(food_info.loc[[2,5,8]])   #取数据第3,6,9行,也就是索引号2,5,8

#-------------------------取某一列的数据---------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# name_row=food_info["NDB_No"]    #列的列名
# print(name_row)

#-------------------------取某n列的数据----------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# data_row=food_info[["NDB_No","Shrt_Desc"]]    #列的列名
# print(data_row)

#-------------------------取特殊数据列的数据----------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# col_names=food_info.columns.tolist()   #取数据的每一列的列名,把它放进List数组中
# print(col_names)
# print("-------------------------------")
# g_col_names=[]
# for i in col_names:
#     if i.endswith("(g)"):    #以"(g)"结尾的列名
#         g_col_names.append(i) #追加到g_col_names数组中
# print(g_col_names)
#
# print("-------------------------------")
# head_data_3=food_info[g_col_names].head(3)
# print(head_data_3)    #只打印数据前三行

#-------------------------数据换算----------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# mg_convertto_g=food_info["Calcium_(mg)"]/1000
# print(mg_convertto_g)

#-------------------------n列对应加减乘除运算及增加一列操作----------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# add_data=food_info["Ash_(g)"]+food_info["Carbohydrt_(g)"]  #两列相加
# print(add_data.head(3))     #显示前三行数据
# print("----------------------------------------")
# print("初始的维度:\n",food_info.shape)
# mg_convertto_g=food_info["Calcium_(mg)"]/1000 #把这列所有数据除以1000
# food_info["mg_convertto_g"]=mg_convertto_g   #增加新的一列数据
# print("现在的维度:\n",food_info.shape)

#------------------------某列最大值查找及归一化-----------------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# Max_data5=food_info["Sugar_Tot_(g)"].head(5).max() #取前5行最大值
# print("前5行最大值:\n",Max_data5)
# print("-------------------------------------------------")
# Max_data_all=food_info["Sugar_Tot_(g)"].max()  #取该列所有数据中的最大值
# normalize_data_all=food_info["Sugar_Tot_(g)"]/Max_data_all  #归一化处理
# print(normalize_data_all)

#------------------------排序操作-----------------------
# food_info=pd.read_csv("food_info.csv")  #读文件
# food_info.sort_values("Ash_(g)",inplace=True)   #默认升序排序,inplace表示是否生成一个新的dataframe,这里True表示不生成
# print("升序:\n",food_info["Ash_(g)"])
# print("-------------------------------")
# food_info.sort_values("Ash_(g)",inplace=True,ascending=False) #降序操作,ascending=False表示降序,ascending=True为默认,表示升序
# print("降序:\n",food_info["Ash_(g)"])

#------------------------缺失值查找与统计(notebook中运行最好)--------------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# #print(titanic_data.head())
# age=titanic_data["Age"]
# age_null=pd.isnull(age)  #使用pandas中的空判断函数判断这一列,如果为空,会返回True
# print(age_null)
# #统计该列的缺失值个数
# count_null=len(age[age_null])  #查找的True可以作为索引
# print("缺失值个数:\n",count_null)

#------------------------求均值(在缺失值存在的条件下)--------------------
#-------------1、当缺失值存在且不处理的情况下:---------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# avg=sum(titanic_data["Age"])/len(titanic_data["Age"])
# print("平均年龄:\n",avg)
#-------------2、当缺失值存在且处理的情况下:---------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# age_null=pd.isnull(titanic_data["Age"]) #使用pandas中的空判断函数判断这一列,如果为空,会返回True
# good_age=titanic_data["Age"][age_null==False]  #查找出这一列的缺失值为False的数据
# avg=sum(good_age)/len(good_age)
# print("平均年龄:\n",avg)
#-------------3、使用内置函数处理缺失值及求均值:---------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# good_age=titanic_data["Age"].mean() #均值,会自动忽略缺失值
# print("平均年龄:\n",good_age)
# titanic_data.fillna(good_age,inplace=True)#把NaN用平均值填充
# print(titanic_data["Age"].head(6))

#-------------------求对应舱位的均值----------------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# Pclass_Tick=titanic_data.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)
# '''
# .pivot_table(透视表)方法里面可以填写三个值,index表示统计的数据以谁为基准,
# values表示关系,相当于x与y之间的关系。aggfunc是一个方法,求它们对应的均值,当然,也可以不写,默认为求均值
# '''
# print(Pclass_Tick)
#
# one_both=titanic_data.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)
# print(one_both)

#------------------去掉NaN值(notebook中运行最好)--------------------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# td=titanic_data.dropna(axis=0,subset=["Age","Survived"])

#------------------重新排序--------------------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# new_titanic_date=titanic_data.sort_values("Age",ascending=False) #以年龄进行降序排序
# print(new_titanic_date.head(10))
# reset_index=new_titanic_date.reset_index(drop=True)  #drop=True表示原来的不要了,直接新建一个
# print(reset_index.loc[0:9])   #切片取数据也可以

#------------------自定义函数查找缺失值个数--------------------------
# titanic_data=pd.read_csv("titanic_train.csv")  #读文件
# def NaN_search(column):
#     null_bool_data=pd.isnull(column)
#     NaN_data=column[null_bool_data]
#     return len(NaN_data)
#
# count_NaN=titanic_data.apply(NaN_search)  #调用该函数,统计NaN个数
# print(count_NaN)




#-------------------Series数据结构------------------------------
# fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
# film=fandango["FILM"]
# print(type(film))
#
# film_names=film.values  #取出film这一列中的每一个值
# print(type(film_names))

#-------------------Series索引操作------------------------------
# from pandas import Series   #创建Series需要导入Series
# fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
# film=fandango["FILM"]
# film_names=film.values  #取出film这一列中的每一个值
# # print(film_names)
# score_Ro=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
# series_custom=Series(score_Ro,index=film_names)   #用电影名当成一个索引
# print(series_custom[["Ant-Man (2015)","Cinderella (2015)"]])  #打印这两个电影对应的评分
# print("---------------------------------")
# five_ten=series_custom[5:10]        #也可以不指定电影名,打印索引5——10的数据
# print(five_ten)


#-------------------Series排序操作------------------------------
# from pandas import Series
# fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
# film=fandango["FILM"]
# film_names=film.values  #取出film这一列中的每一个值
# score_Ro=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
# series_custom=Series(score_Ro,index=film_names) #用电影名当成一个索引
# list_index=series_custom.index.tolist()   #把电影名当成索引放进数组
# sort_index=sorted(list_index)
# reIndex=series_custom.reindex(sort_index)
# print(reIndex)

#---------------------Series算平均值-------------------------------
# from pandas import Series
# fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
# film=fandango["FILM"]
# film_names=film.values  #取出film这一列中的每一个值
# score_Ro1=fandango["RottenTomatoes"].values   #取出fandango["RottenTomatoes"]中的每一个值
# score_Ro2=fandango["RottenTomatoes_User"].values   #取出fandango["RottenTomatoes_User"]中的每一个值
# series_custom1=Series(score_Ro1,index=film_names) #用电影名当成一个索引
# series_custom2=Series(score_Ro2,index=film_names) #用电影名当成一个索引
# series_avg=(series_custom1+series_custom2)/2   #求两个媒体对这部电影的评分,取均值
# print(series_avg)


#---------------------DataFrame当索引取数据-------------------------------
# fandango=pd.read_csv("fandango_score_comparison.csv")  #读文件
# fandango_index=fandango.set_index("FILM",drop=True)  #设置电影名当成索引,drop=True表示原来的不要了,直接新建一个
# cut_data=fandango_index["Avengers: Age of Ultron (2015)":"Hot Tub Time Machine 2 (2015)"]
# print(cut_data)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值