//2019.07.18
pyhton中pandas數據分析學習——第二部分
2.1 數據格式轉換
1、查看與轉換表格某一列的數據格式:
(1)查看數據類型:某一列的數據格式:df["列屬性名稱"].dtype
(2)數據類型轉換:某一列的數據類型轉換需要用到數據轉換函數:
df[列屬性名稱]=df[列屬性名稱].astype("新的數據類型")
代碼舉例如下:
import numpy as np
import pandas as pd
df=pd.read_excel("D:/Byrbt2018/Study/Python數據分析課程+練習+講解/Python數據分析課程+練習+講解/作業/作業4/作業4/酒店數據1.xlsx")
print(df)
print(df["評分"].dtype) #查看類型這一列的數據類型
print(df["評分"])
df["評分"]=df["評分"].astype("int") #進行數據表格的數據類型轉換需要用到數據類型轉換函數df["列名稱"].astype("類型名稱”)
print(df["評分"])
print(df["評分"].dtype)
2.2 數據的排序
1、單個表格列數據的排序需要用到函數:
df.sort_values(by=列名稱,ascending=True(升)/False(降))
print(df.sort_values(by="評分",ascending=False)["評分"])
2、多排序問題:
對於多列排序問題,主要是遇到其中一個列數據相同的時候需要看另外一個列數據進行排序,使用的函數及其使用規則如下:
df.sort_values(by=[列1,列2...],ascending=[True,False...])
其中函數參數by=[,,]前后順序代表了多列排序優先級順序,ascending=[,,]中False和True代表了相應每列的排序原則(升降))
2.3 基本統計數據分析
1、對於數值型的數據通常都需要進行相應的常見統計數據分析,最常見的描述性統計函數是.describe(),它可以給出數據的多項統計指標;
2、對於表格各個列的數據統計指標主要有以下幾個函數:
(1)最值:最大值和最小值df[].max()和df[].min()
(2)中位數:df[].median()
(3)平均值:df[].mean()
(4)方差:df[].var()
(5)標准差:df[].std()
(6)求和函數:df[].sum()
(7)相關系數與協方差:
相關系數:df[[1,2...]].corr()
協方差:df[[1,2...]].cov()
(8)計數:
1)對於每一類數據中出現的唯一值統計可以用函數df[列屬性].unique()來進行查詢,個數的話直接在前面加len就可以了
2)表格中數據的替換:使用函數df[列名稱1].replace(A,B,inplace=True)#代表的是將表格中列1的數據中的所有數據A替換為數據B
3)統計出現唯一值的出現次數使用函數df[列].valuecounts()它默認是以降序的排列對每個不同出現的數據進行相關的次數統計輸出
2.4數據透視操作和函數
1、數據透視是一個使用廣泛並且功能強大的數據信息挖掘功能,它的函數是pd.pivot_table()
2、數據透視函數的參數與使用規則
函數的形式如下:
pd.pivot_table(df,index=[列1,列2...],values=[其余列1,其余列2...],aggfunc=np.sum...,,fill_value=0(處理非數值性質數據),margins=True(總和統計數據),columns=[列1,列2...](只要是指列方向的分層,類似於index的行分層,非必要參數))
具體舉例代碼如下:
pd.set_option("max_columns",1000)
pd.set_option("max_rows",1000)
#設置pyhton輸出數據的行和列的最大行數目(大於設定值之后才會出現省略號)
print(df)
print(pd.pivot_table(df,index="地區")) #輸出以地區為屬性的各列數據均值
print(pd.pivot_table(df,index=["地區","類型"])) #輸出以地區為第一層,類型為第二層的其他各列數據均值
print(pd.pivot_table(df,index=["地區","類型"],values=["價格"]))
print(pd.pivot_table(df,index=["地區","類型"],values=["價格"],aggfunc=[np.sum,np.mean]))
print(pd.pivot_table(df,index=["地區"],values=["評分","價格"],columns=["類型"],aggfunc={"評分":np.mean,"價格":np.sum},fill_value=0))
table=pd.pivot_table(df,index=["地區","類型"],values=["價格"])
#print(table.sort_values(by="評分",ascending=False)) #對於評分進行降序排列
print(table.index)
整體的入門運行代碼如下所示(可以直接拷貝運行,含有詳細的代碼注釋,可以輕松幫助你入門理解):
import numpy as np
import pandas as pd
df=pd.read_excel("D:/Byrbt2018/Study/Python數據分析課程+練習+講解/Python數據分析課程+練習+講解/作業/作業4/作業4/酒店數據1.xlsx")
print(df)
print(df.index)
print(df.columns)
print(df[:5]) #輸出前5行數據
print(df["評分"].dtype) #查看類型這一列的數據類型
print(df["評分"])
df["評分"]=df["評分"].astype("int") #進行數據表格的數據類型轉換需要用到數據類型轉換函數df["列名稱"].astype("類型名稱”)
print(df["評分"])
print(df["評分"].dtype)
print(df["地區"].dtype)
df["地區"]=df["地區"].astype("str") #將地區列的數據轉換為字符串類型的數據
print(df["地區"].dtype)
print(df["地區"])
#表格數據的排序
print(df.sort_values(by="評分",ascending=False)["評分"]) #數據的排序用函數df.sort_values(by=列名稱,ascending=True(升)/False(降))
print(df.sort_values(by=["評分","價格"],ascending=False))
print(df.sort_values(by=["評分","價格"],ascending=[False,True])[["評分","價格"]]) #多列排序問題(根據參數by=[,,]前后順序代表了多列排序優先級順序,ascending=[,,]代表了相應每列的排序原則(升降))
#數據的統計分析與描述
print(df.describe()) #給出一個數據表格里面所有列數據是數值型數據的統計指標(包括數據平均值、數目,中值,最小值,最大值)
print(df["價格"].mean())#輸出價格列數據的平均值
print(df["價格"].var()) #輸出價格列數據的方差
print(df["價格"].max()) #輸出價格列數據的最大值
print(df["價格"].min()) #輸出價格列數據的最小值
print(df["價格"].std()) #輸出價格的標准差
print(df["價格"].median()) #輸出價格的中位數
print(df[["價格","評分"]].corr()) #輸出價格和評分的相關系數
print(df[["價格","評分"]].cov()) #輸出價格和評分的協方差
print(len(df)) #計數統計
print(df["評分"].unique()) #查詢一列數據中的所有唯一值
print(len(df["評分"].unique())) #查詢出現唯一不同值的個數
df["評分"].replace(4,4.1,inplace=True) #表格評分數據中的替換(將4替換為4.1)
print(df["評分"])
print(df["地區"].unique()) #輸出所有的唯一值
print(len(df["地區"].unique())) #輸出一列數據中不同數據的個數
print(df["地區"].value_counts()) #對於每個唯一值出現的個數
print(df["地區"].value_counts()[:5]) #輸出數據個數前五的地區及其出現的個數
#數據透視函數的使用和功能pd.pivot_table(df,index=[列1,列2...],values=[其余列1,其余列2...],aggfunc=np.sum...,,fill_value=0(處理非數值性質數據),margins=True(總和統計數據),columns=[列1,列2...](只要是指列方向的分層,類似於index的行分層,非必要參數))
pd.set_option("max_columns",1000) #設置pyhton輸出數據的行和列的最大行數目(大於設定值之后才會出現省略號)
pd.set_option("max_rows",1000)
print(df)
print(pd.pivot_table(df,index="地區")) #輸出以地區為屬性的各列數據均值
print(pd.pivot_table(df,index=["地區","類型"])) #輸出以地區為第一層,類型為第二層的其他各列數據均值
print(pd.pivot_table(df,index=["地區","類型"],values=["價格"]))
print(pd.pivot_table(df,index=["地區","類型"],values=["價格"],aggfunc=[np.sum,np.mean]))
print(pd.pivot_table(df,index=["地區"],values=["評分","價格"],columns=["類型"],aggfunc={"評分":np.mean,"價格":np.sum},fill_value=0))
table=pd.pivot_table(df,index=["地區","類型"],values=["價格"])
#print(table.sort_values(by="評分",ascending=False)) #對於評分進行降序排列
print(table.index)
運行結果如下: