小丸子踏入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)"])

運行結果:(部分展現)

相關文章
相關標籤/搜索