数据分析处理库——Pandas

简介

Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。下面我们将要介绍Pandas的具体用法,本篇文章用到的文件分别为food_info.csv、fandango_score_comparison.csv以及titanic_train.csv。

使用

    1.读取文件以及查看数据属性类型

import pandas as pd
#注意目录读写格式
food_info=pd.read_csv('J:/BaiduNetdiskDownload/food_info.csv')
#显示food_info的数据类型
print(type(food_info))
#显示food_info属性的数据类型
print(food_info.dtypes)
#print(help(pd.read_csv))

    上面代码需要注意的及时读取数据文件时的目录格式,运行结果如下。

数据分析处理库——Pandas

 

    2.按要求提取数据

#默认读取前五行,括号里可以加参数指定读取几行
#food_info.head()
#默认读取最后五行
#food_info.tail()
#类似于矩阵读取行列数
#print(food_info.shape)
#读取列的属性
print(food_info.columns)

    上面代码注释标注的很清楚,运行结果读者可以自行验证。

    3.Pandas的索引操作

#pandas的索引操作,下面打印出的是第一行数据
print(food_info.loc[0])
#打印3到6行的数据
#food_info.loc[3:6]
#打印2,5,7行的数据,两个中括号
food_info.loc[[2,3,7]]

    运行结果读者自行验证。

    4.按照属性名输出值

num=food_info["NDB_No"]
#按照属性名输出某一列属性的全部值
print(num)

     5.按照局部属性名输出值

#输出文件属性中以g为单位结尾的,输出五行
col_name=food_info.columns.tolist()
print(col_name)
gram_col=[]
for c in col_name:
    if c.endswith ("(g)"):
        gram_col.append(c)
grams=food_info[gram_col]
print(grams.head(5))

    运行结果显示如下。

数据分析处理库——Pandas

    6. 向数据文件相似的矩阵添加一属性

water_energy=food_info["Water_(g)"]*food_info["Energ_Kcal"]
print(water_energy)
print(food_info.shape)
#矩阵shape改变,实则文件中的属性并未改变
food_info["water_energy"]=water_energy
print(food_info.shape)

    结果显示如下:

数据分析处理库——Pandas

      7. max()函数,求某一属性列的最大值

#max函数
max_calories=food_info["Energ_Kcal"].max()
print(max_calories)
div_max=food_info["Energ_Kcal"]/max_calories
food_info["cal_div_max"]=div_max
print(food_info.shape)
food_info.head(5)

        结果读者可以自行验证。

    8.根据属性名输出所有属性值

import pandas as pd
import numpy as np
#读取文件
titanic_survival=pd.read_csv("J:/BaiduNetdiskDownload/titanic_train.csv")
age=titanic_survival["Age"]
#输出属性名为“Age”的值
print(age[0:10])
age_is_null=pd.isnull(age)
#判断"Age"的值是否为空并进行输出
print(age_is_null)
age_null_true=age[age_is_null]
#输出“Age”为空的值
print(age_null_true)
#“Age”为空的值个个数
print(len(age_null_true))

    运行结果可以自行验证。

    9.求某一属性的平均值

#求某一属性的平均值,缺失值自动过滤
mean_age=titanic_survival["Age"].mean()
print(mean_age)

     10.根据不同的索引求平均值

#查看123等舱乘客的平均获救率
passager_survival=titanic_survival.pivot_table(index="Pclass",values="Survived",aggfunc=np.mean)
print(passager_survival)

    运行结果如下:

 

数据分析处理库——Pandas

    11.dropna的使用

#丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
dropna_col=titanic_survival.dropna(axis=1)
#print(dropna_col)
#丢弃‘Age’和‘Sex’这两列中有缺失值的行 
dropna_raw=titanic_survival.dropna(axis=0,subset=["Age","Sex"])
#print(dropna_raw)

    12.自定义函数

#输出第一百行的记录
def hundred_row(column):
    hundred_item=column.loc[99]
    return hundred_item
hundred_rec=titanic_survival.apply(hundred_row)
print(hundred_rec)
#输出文件中每个属性缺失值的个数
def not_null_count(column):
    column_null=pd.isnull(column)
    null=column[column_null]
    return len(null)
column_null_count=titanic_survival.apply(not_null_count)
print(column_null_count)

    13.Series

         从读取的数据已矩阵的形式表示出来,一般来说,可以把矩阵的一行记录或一列理解为一个Series。

from pandas import Series
fandango=pd.read_csv("J:/BaiduNetdiskDownload/fandango_score_comparison.csv")
series_film=fandango["FILM"]
#显示series_film的数据类型
print(type(series_film))
#print(series_film[0:5])
series_rt=fandango["RottenTomatoes"]
#print(series_rt[0:5])
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[["Irrational Man (2015)","Leviathan (2014)"]]

    显示结果如下:

数据分析处理库——Pandas

    14. 排序

#按字典序给电影排序
original_index=series_custom.index.tolist()
sorted_index=sorted(original_index)
sorted_by_index=series_custom.reindex(sorted_index)
print(sorted_by_index)

   结果读者自行验证即可。 

    15.求每一列属性值的标准差

types=fandango_films.dtypes
#求得所有的float列
float_columns=types[types.values=="float64"].index
float_df=fandango_films[float_columns]
print(float_df)
print("____________________________")
#对每一列的值求标准差
deviations=float_df.apply(lambda x: np.std(x))
print(deviations)

    结束

Pandas库就先写到这儿吧,有空再补充。