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)"])
運行結果:(部分展現)