小丸子踏入python之路:python_day05(数据分析处理库Pandas)

 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

  DataFrame结构中的dtype类型

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显示形式有些不一样   

运行结果:

  三、 .columns函数显示文件的列名

food_info.columns #显示文件的列名 #print(food_info.columns) #与不带print同样

运行结果:

   4. .shape函数,返回数据文件的规模(即行数和列数)

food_info.shape #返回数据文件的规模,即行数和列数(样本数与属性数)

运行结果:

   5. .loc[ ]函数,取数据文件中特定行位置的数据

  •      在Pandas中取文件特定位置的数据不像python和numpy中那样直接经过index来调,一般会使用.loc[a]函数来调,参数a等于几就是取第a+1行的数据。(index是从0开始的)
food_info.loc[0] #返回第一行的文件数据 #print(food_info.loc[0])

运行结果:

注意:

   当index的值超过了文件的样本个数,会报错。因此注意索引的大小。

food_info.loc[8888] #返回第8889行的文件数据

运行结果:

  • 一般会使用.loc[a:b]函数来调,参数a:b 至关于取从第a行到第b行的数据。
food_info.loc[3:6] #返回数据文件的3——6行数据

运行结果:

 

  •    一般会使用.loc[[a,b,c]]函数来调,参数a,b,c 至关于去取第a,b,c三行的数据。
food_info.loc[[3,5,7]] #返回数据文件的3,5,7行数据

运行结果:

   6. 取数据文件中特定列位置的数据

  •    想要一列一列的取数据,应该运用什么方法呢?

  数据的每一列都有一个列名,当对 .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)"]]

运行结果:

   7.抽取列名中以(g)为单位的列的数据

  在 .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)”为单位的列名对应的数据的前三行

运行结果:

  8.在Pandas中单列数据的“+”“-”“×”“÷”操做

     需求:在 .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) #打印换算后的数据。

运行结果:

        

   9.在Pandas中多列数据之间的“+”“-”“×”“÷”操做

    在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"]])

运行结果:

   10.用.max()函数求某一列数据的最大值

       要求:求某一列数据的最大值

     思路:先定位到这一列,而后用.max()函数直接求出

#求某一列数据的一个最大值 #首先定位到某一列,而后使用.max()函数,求出最大值 max_calories = food_info["Energ_Kcal"].max() print("max = ",max_calories)

运行结果:

   11.用sort_values()对Pandas中的数据进行排序

对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)"])

运行结果:(部分展现)

相关文章
相关标签/搜索