Pandas概述:python
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而建立的。Pandas 归入了大量库和一些标准的数据模型,提供了高效地操做大型数据集所需的工具。pandas提供了大量能使咱们快速便捷地处理数据的函数和方法。app
关于数据处理的一个库,只有把数据处理成合适的样子才有利于之后的建模。函数
Pandas库的安装:工具
在anaconda中已经安装了这个库,不用本身安装。oop
如何查看anaconda中安装的库呢?spa
打开 anaconda prompt,输入conda list后回车便可。3d
若是真的须要安装,则直接输入:pip install (tensorflow)便可code
Pandas的基本操做:blog
1.读取.csv格式的数据文件排序
在处理数据以前,先将数据读进来,pandas中提供了读取.csv文件的函数:.read_csv()
本操做处理的文件,文件名为:food_info.csv
当代码和数据在同一目录时,函数.read_csv("food_info.csv")的参数可直接输入文件名,
当代码与数据不在同一文件夹中,则应在函数.read_csv("D:\softwares\food_info.csv")的参数中输入数据的绝对路径.
与NumPy中的核心结构ndarray相似,在Pandas中也有其核心结构为:DataFrame
object————for string values int————for integer values float————for float values datetime————for time values bool————for Boolean values
能够用如下代码查看:
print(food_info.dtypes) #打印文件中数据的类型。object类型即string类型
food_info.csv文件的局部预览图:
1 import pandas 2 food_info = pandas.read_csv("food_info.csv") #读取数据文件, 并将数据赋值成一个变量 3 print(type(food_info)) #将数据赋值成一个变量后,打印此变量的类型为Dataframe 4 print(food_info.dtypes) #打印文件中数据的类型。object类型即string类型 5 print(help(pandas.read_csv)) #若对pandas中的某函数不了解,能够经过help()来查看
运行结果:
2. DataFrame类型的变量拥有的操做
在第一步中,将要处理的数据文件读取出来并赋值给一个变量food_info,此变量的类型为DataFrame类型,下边将会对这个变量进行操做。
2.1 .head()函数,显示读取出来的头几行数据
无参数
.head()函数若是不加参数,则默认显示数据的前五行。
food_info.head() #head()没有给定参数,默认显示前5行
运行结果:
有参数
.head(a)函数若是添加参数a,则显示数据的前a行。
food_info.head(3) #当head(a)指定参数a,则显示先a行
运行结果:
2.2 .tail()函数,显示读取出来的尾几行数据
无参数
.tail()函数若是不加参数,则默认显示数据的末尾五行。
food_info.tail() #tail()没有参数时,显示尾五行
运行结果:
有参数
.tail(a)函数若是添加参数a,则显示数据的末尾a行。
food_info.tail(3) #tail(a) 有参数a时,显示尾a行
运行结果:
有print与没有print的区别
没有实质性的差异,只是显示的形式不一样而已。
print(food_info.tail(3)) #有print和没有print显示形式有些不一样
运行结果:
food_info.columns #显示文件的列名 #print(food_info.columns) #与不带print同样
运行结果:
food_info.shape #返回数据文件的规模,即行数和列数(样本数与属性数)
运行结果:
food_info.loc[0] #返回第一行的文件数据 #print(food_info.loc[0])
运行结果:
注意:
当index的值超过了文件的样本个数,会报错。因此注意索引的大小。
food_info.loc[8888] #返回第8889行的文件数据
运行结果:
food_info.loc[3:6] #返回数据文件的3——6行数据
运行结果:
food_info.loc[[3,5,7]] #返回数据文件的3,5,7行数据
运行结果:
数据的每一列都有一个列名,当对 .read_csv()不指定参数的时候,会默认数据的第一行是列名。则能够经过第一行的列名,来拿到这一列。
ndb_col = food_info["NDB_No"] #打印列名为“NDB_No”所在的那一列 print(ndb_col) #也能够将列名“NDB_No”赋值给变量,而后经过变量来返回数据 col_name = "NDB_No" ndb_col = food_info[col_name] print(ndb_col)
运行结果:
想要取特定的几列,则只须要将想要取得列的列名弄到一块儿,组成一个list就能够了
columns = ["Zinc_(mg)","Copper_(mg)"] #将要取得两列的列名放到一个list里,并赋给变量 zinc_coop = food_info[columns] #经过变量取得两列的数据 zinc_coop #显示 #要不要print只是打印出来的形式不太相同 #print(zinc_coop) #彻底能够不依靠中间变量,意义相同 #food_info[["Zinc_(mg)","Copper_(mg)"]]
运行结果:
在 .csv数据中,有的是以克(g)为单位,有些是以毫克(mg)为单位,如今的目标是:抽取出所有以(g)为单位的列的数据。
数据的列表头基本状况展现以下:
思路:先去列名,用.columns函数,而后将取得的列名存放成list格式。
再经过对list操做,来匹配出以 “(g)”结尾的列名,append到food_info中。
import pandas #目的:想要看一下数据中有哪些列是以克(g)为单位的 food_info = pandas.read_csv("food_info.csv") #读取.csv的数据文件 #print(food_info.columns) #返回DataFrame类型变量的列名 #print(food_info.head(2)) col_names = food_info.columns.tolist() #返回DataFrame类型变量的列名,并将其存储为list格式显示。 print("col_names = ", col_names) print("-----------------------------------------------") gram_columns = [] #定义list的变量,准备存放以(g)为单位的列名 for c in col_names: #用for循环对为一个列名进行遍历 if c.endswith("(g)"): #若是列名是以“(g)”结尾的,则将其放入到gram_columns的列表中 gram_columns.append(c) print("gram_columns = ", gram_columns) print("------------------------------------------------") gram_df = food_info[gram_columns] #gram_df 是全部以(gram_columns)为列名的列的数据。(即抽出这么几行) print(gram_df.head(3)) #打印全部以“(g)”为单位的列名对应的数据的前三行
运行结果:
需求:在 .csv的文件中,有的列的数据是以毫克(mg)为单位的,如今想将其转化成为以克(g)为单位的数据。
思路:用food_info["列名"]的方式调出某一列的数据,而后将其 / 1000,便把以毫克(mg)为单位的转化成了以克(g)为单位的了。嘻嘻
print(food_info["Iron_(mg)"]) #显示以mg为单位的,Iron_(mg)的数据 div_1000 = food_info["Iron_(mg)"]/1000 #将其数据 ÷1000,换算为 g print(div_1000) #打印换算后的数据。
运行结果:
在Pandas中,不但各列数据能够“+”“-”“×”“÷”任何数,两列或者多列数据之间也能够进行“+”“-”“×”“÷”。
要求维度同样,当维度同样的时候,对应位置的数据进行运算。
下边要介绍的是将数据中的两列数据进行乘法,而后把获得的结果做为数据的一个新的指标加入到原来的数据中,使本来数据的列数据增长一。
import pandas #如若数据的维度相同,即行列数相同,则可将数据进行“+”“-”“×”“÷”操做。 #并可将操做事后获得的列添加在原来数据中,成为一个新的指标,此时的数据的.shape的值将会多加了一列。 food_info = pandas.read_csv("food_info.csv") #读取.csv的数据文件 water_energy = food_info["Water_(g)"]*food_info["Energ_Kcal"] #将数据中"Water_(g)"和"Energ_Kcal"这两列的数据作乘法运算, #并将结果赋值给变量water_energy print("原数据的shape值:",food_info.shape) food_info["Water_energy"] = water_energy #将乘法获得的新的数据做为样本的一个指标加入到food_info变量中,命名为:"Water_energy" print("如今的shape值:", food_info.shape) columns = ["Water_(g)","Energ_Kcal","Water_energy"] #将三列数据组成一个list,而后赋值给变量columns water_energy_togher = food_info[columns] #将list做为food_info的参数,并显示 water_energy_togher #固然了,以上的三行代码,能够合并为下边的一句,注意三个列名组成的是一个list,而后传到food_info[]中 #print(food_info[["Water_(g)","Energ_Kcal","Water_energy"]])
运行结果:
要求:求某一列数据的最大值
思路:先定位到这一列,而后用.max()函数直接求出
#求某一列数据的一个最大值 #首先定位到某一列,而后使用.max()函数,求出最大值 max_calories = food_info["Energ_Kcal"].max() print("max = ",max_calories)
运行结果:
对Pandas的列进行一个排序
使用sort_values()函数对数据进行一个排序,
参数:首先要给一个列名(即对此列数据进行排序)
inpalce = True,表示排序后生成一个新的DataFrame数据,而不是原来的那个。 = False表示原来的那个
并且sort_values()默认的排序方式就是从小到大排序,若是想要从大到小,则设置ascending = False
对于缺省值的样本,panda会返回NaN,并将这数据排在最后
#对Pandas的列进行一个排序 #使用sort_values()函数对数据进行一个排序,参数:首先要给一个列名(即对此列数据进行排序) #inpalce = True,表示排序后生成一个新的DataFrame数据,而不是原来的那个。 = False表示原来的那个 #并且sort_values()默认的排序方式就是从小到大排序,若是想要从大到小,则设置ascending = False #对于缺省值的样本,panda会返回NaN,并将这数据排在最后
food_info.sort_values("Sodium_(mg)",inplace = True) print(food_info["Sodium_(mg)"]) food_info.sort_values("Sodium_(mg)",inplace = True, ascending = False) print(food_info["Sodium_(mg)"])
运行结果:(部分展现)