day8--pandas

pandas–数据分析处理库

#Series(值集合)
#DataFrame(series对象的集合) DataFrame里的结构是series,series里的结构是ndarray,pandas是封装在numpy基础之上的, from pandas import series
#Panel (DataFrame对象集合)

##Series对象可以保存许多数据类型,包括
float–用于表示浮动值
int --表示整数值
bool–表示布尔值
datetime64[ns]–用于表示日期和时间,不带时区
datetime64[ns, tz] --表示日期和时间,带有时区
timedelta[ns]–用于表示日期和时间(秒、分钟等)的差异
category–用于表示分类值
object–用于表示字符串值

FILM–影片名称
RottenTomatoes–烂番茄评论家平均得分
RottenTomatoes_User–烂番茄用户平均得分
RT_norm --烂番茄影评人平均得分(归一化为0 - 5分)
RT_user_norm --烂番茄用户平均得分(归一化为0 - 5分)
Metacritic --Metacritic批评平均得分
#Metacritic_User - Metacritic用户平均得分

  1. #数据集是一个关于电影的评分
    import pandas as pd
    fandango = pd.read_csv(‘fandango_score_comparison.csv’) #用pd.read_csv()读取关于电影评分的数据,并将其赋给一个变量fandango
    series_film = fandango[‘FILM’] #对fandango取其中名为“FILM”的一列,赋值给变量series_film
    print(series_film[0:5]) #打印series_film数据的前5行
    series_rt = fandango[‘RottenTomatoes’] #取这个评分网站的评分
    print(series_rt[0:5])

  2. Pandas是封装在NumPy之上的,很多的操作都是Numpy操作的组合。
    from pandas import Series

film_names = series_film.values
print(type(film_names))
#print(film_names)
rt_scores = series_rt.values
print(rt_scores)
series_custom = Series(rt_scores , index=film_names)
series_custom[[‘Minions (2015)’, ‘Leviathan (2014)’]]

series_custom = Series(rt_scores , index=film_names)
series_custom[[‘Minions (2015)’, ‘Leviathan (2014)’]]
fiveten = series_custom[5:10]
print(fiveten)

  1. Series的排序.sort()
    original_index = series_custom.index.tolist() #打印series_custom这个Series类型的索引列表
    #print(original_index)
    sorted_index = sorted(original_index) #对series_custom的索引列表进行排序
    sorted_by_index = series_custom.reindex(sorted_index) #为重新排序后的数据置换新的index
    print(sorted_by_index)

  2. 按不同方式进行排序
    sc2 = series_custom.sort_index() #按照series_custom的索引排序
    sc3 = series_custom.sort_values() #按照series_custom的值排序
    #print(sc2[0:10])
    print(sc3[0:10])

  3. (Series对象中的值被视为ndarray,即NumPy中的核心数据类型)
    import numpy as np
    print(np.add(series_custom, series_custom)) #.add()两个Series相加(维度相同分别相加)
    print(np.sin(series_custom)) #对每一个值使用sin()函数
    print(np.max(series_custom)) #返回最大值(将返回单个值,而不是一个级数)

  4. 输出serise_custom中评分>50,<75的电影(将为每个影片返回一个具有布尔值的Series对象)
    series_custom > 50
    series_greater_than_50 = series_custom[series_custom > 50]
    criteria_one = series_custom > 50
    criteria_two = series_custom < 75
    both_criteria = series_custom[criteria_one & criteria_two] #抽选出>50,<75的数据
    print(both_criteria)

  5. 具有相同index的两个Series结构之间的运算(数据对齐相同索引)
      先生成两个新的Series(与之前的series_custom相同概念),然后两个series具有相同的index,就可以进行运算。这里的两个Series的index都是“FILM”(电影名),而values值是两个不同的评分网站的评分。
    rt_critics = Series(fandango[‘RottenTomatoes’].values, index=fandango[‘FILM’]) #生成两个新的Series,index相同,都 是“FILM”, values是两个网站各自的评分
    rt_users = Series(fandango[‘RottenTomatoes_User’].values, index=fandango[‘FILM’])
    rt_mean = (rt_critics + rt_users)/2 #两个series的index相同,可以对其操作
    print(rt_mean)

  6. 对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)
    print(fandango_films.index)

  7. 索引的切片可以是[1:5]这种类型,也可以是[“str”:“str”]类型
    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)”]
    fandango_films.loc[‘Kumiko, The Treasure Hunter (2015)’]
    #当选择多个行时,返回一个DataFrame,但是在选择单个行时,将返回一个Series对象
    movies = [‘Kumiko, The Treasure Hunter (2015)’, ‘Do You Believe? (2015)’, ‘Ant-Man (2015)’]
    fandango_films.loc[movies]

  8. pandas中的apply()方法允许我们指定Python逻辑,apply()方法要求传递一个向量化的操作,可以应用于每个系列对象。
    import numpy as np
    types = fandango_films.dtypes #返回的数据类型是series
    print(types)

float_columns = types[types.values == ‘float64’].index # 过滤数据类型为浮点数,索引属性只返回列名
float_df = fandango_films[float_columns] #使用括号符号过滤列,使其仅浮动列
print(float_df)

deviations = float_df.apply(lambda x: np.std(x)) #’ x '是一个表示列的series对象
print(deviations)

rt_mt_user = float_df[[‘RT_user_norm’, ‘Metacritic_user_nom’]]
rt_mt_user.apply(lambda x: np.std(x), axis=1)

#至此,pandas结束(ending)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值