首頁>Club>
6
回覆列表
  • 1 # 喝點酒侃侃球

    一、生成資料表 1、首先匯入pandas庫,一般都會用到numpy庫,所以我們先匯入備用:import numpy as npimport pandas as pd122、匯入CSV或者xlsx檔案:df = pd.DataFrame(pd.read_csv("name.csv",header=1))df = pd.DataFrame(pd.read_excel("name.xlsx"))123、用pandas建立資料表:df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], "date":pd.date_range("20130102", periods=6), "city":["Beijing ", "SH", " guangzhou ", "Shenzhen", "shanghai", "BEIJING "], "age":[23,44,54,32,34,32], "category":["100-A","100-B","110-A","110-C","210-A","130-F"], "price":[1200,np.nan,2133,5433,np.nan,4432]}, columns =["id","date","city","category","age","price"])12345672、資料表資訊檢視 1、維度檢視:df.shape12、資料表基本資訊(維度、列名稱、資料格式、所佔空間等):df.info()13、每一列資料的格式:df.dtypes14、某一列格式:df["B"].dtype15、空值:df.isnull()16、檢視某一列空值:df.isnull()17、檢視某一列的唯一值:df["B"].unique()18、檢視資料表的值: df.values 9、檢視列名稱:df.columns110、檢視前10行資料、後10行資料:df.head() #預設前10行資料df.tail() #預設後10 行資料12三、資料表清洗 1、用數字0填充空值:df.fillna(value=0)12、使用列prince的均值對NA進行填充:df["prince"].fillna(df["prince"].mean())13、清楚city欄位的字元空格:df["city"]=df["city"].map(str.strip)14、大小寫轉換:df["city"]=df["city"].str.lower()15、更改資料格式:df["price"].astype("int") 16、更改列名稱:df.rename(columns={"category": "category-size"}) 17、刪除後出現的重複值:df["city"].drop_duplicates()18、刪除先出現的重複值:df["city"].drop_duplicates(keep="last")19、資料替換:df["city"].replace("sh", "shanghai")1四、資料預處理df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], "gender":["male","female","male","female","male","female","male","female"],"pay":["Y","N","Y","Y","N","Y","N","Y",],"m-point":[10,12,20,40,40,40,30,20]})12341、資料表合併df_inner=pd.merge(df,df1,how="inner") # 匹配合並,交集df_left=pd.merge(df,df1,how="left") #df_right=pd.merge(df,df1,how="right")df_outer=pd.merge(df,df1,how="outer") #並集12342、設定索引列df_inner.set_index("id")13、按照特定列的值排序:df_inner.sort_values(by=["age"])14、按照索引列排序:df_inner.sort_index()15、如果prince列的值>3000,group列顯示high,否則顯示low:df_inner["group"] = np.where(df_inner["price"] > 3000,"high","low")16、對複合多個條件的資料進行分組標記df_inner.loc[(df_inner["city"] == "beijing") & (df_inner["price"] >= 4000), "sign"]=117、對category欄位的值依次進行分列,並建立資料表,索引值為df_inner的索引列,列名稱為category和sizepd.DataFrame((x.split("-") for x in df_inner["category"]),index=df_inner.index,columns=["category","size"]))18、將完成分裂後的資料表和原df_inner資料表進行匹配df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)1五、資料提取 主要用到的三個函式:loc,iloc和ix,loc函式按標籤值進行提取,iloc按位置進行提取,ix可以同時按標籤和位置進行提取。 1、按索引提取單行的數值df_inner.loc[3]12、按索引提取區域行數值df_inner.iloc[0:5]13、重設索引df_inner.reset_index()14、設定日期為索引df_inner=df_inner.set_index("date") 15、提取4日之前的所有資料df_inner[:"2013-01-04"]16、使用iloc按位置區域提取資料df_inner.iloc[:3,:2] #冒號前後的數字不再是索引的標籤名稱,而是資料所在的位置,從0開始,前三行,前兩列。17、適應iloc按位置單獨提起資料df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列18、使用ix按索引標籤和位置混合提取資料df_inner.ix[:"2013-01-03",:4] #2013-01-03號之前,前四列資料19、判斷city列的值是否為北京df_inner["city"].isin(["beijing"])110、判斷city列裡是否包含beijing和shanghai,然後將符合條件的資料提取出來df_inner.loc[df_inner["city"].isin(["beijing","shanghai"])] 111、提取前三個字元,並生成資料表pd.DataFrame(category.str[:3])1六、資料篩選 使用與、或、非三個條件配合大於、小於、等於對資料進行篩選,並進行計數和求和。 1、使用“與”進行篩選df_inner.loc[(df_inner["age"] > 25) & (df_inner["city"] == "beijing"), ["id","city","age","category","gender"]]12、使用“或”進行篩選df_inner.loc[(df_inner["age"] > 25) | (df_inner["city"] == "beijing"), ["id","city","age","category","gender"]].sort(["age"]) 13、使用“非”條件進行篩選df_inner.loc[(df_inner["city"] != "beijing"), ["id","city","age","category","gender"]].sort(["id"]) 14、對篩選後的資料按city列進行計數df_inner.loc[(df_inner["city"] != "beijing"), ["id","city","age","category","gender"]].sort(["id"]).city.count()15、使用query函式進行篩選df_inner.query("city == ["beijing", "shanghai"]")16、對篩選後的結果按prince進行求和df_inner.query("city == ["beijing", "shanghai"]").price.sum()1七、資料彙總 主要函式是groupby和pivote_table 1、對所有的列進行計數彙總df_inner.groupby("city").count()12、按城市對id欄位進行計數df_inner.groupby("city")["id"].count()13、對兩個欄位進行彙總計數df_inner.groupby(["city","size"])["id"].count()14、對city欄位進行彙總,並分別計算prince的合計和均值df_inner.groupby("city")["price"].agg([len,np.sum, np.mean]) 1八、資料統計 資料取樣,計算標準差,協方差和相關係數 1、簡單的資料取樣df_inner.sample(n=3) 12、手動設定取樣權重weights = [0, 0, 0, 0, 0.5, 0.5]df_inner.sample(n=2, weights=weights) 123、取樣後不放回df_inner.sample(n=6, replace=False) 14、取樣後放回df_inner.sample(n=6, replace=True)15、 資料表描述性統計df_inner.describe().round(2).T #round函式設定顯示小數位,T表示轉置16、計算列的標準差df_inner["price"].std()17、計算兩個欄位間的協方差df_inner["price"].cov(df_inner["m-point"]) 18、資料表中所有欄位間的協方差df_inner.cov()19、兩個欄位的相關性分析df_inner["price"].corr(df_inner["m-point"]) #相關係數在-1到1之間,接近1為正相關,接近-1為負相關,0為不相關110、資料表的相關性分析df_inner.corr()1九、資料輸出 分析後的資料可以輸出為xlsx格式和csv格式 1、寫入Exceldf_inner.to_excel("excel_to_python.xlsx", sheet_name="bluewhale_cc") 12、寫入到CSVdf_inner.to_csv("excel_to_python.csv") ---------------------

  • 中秋節和大豐收的關聯?
  • 如何看待國產動漫發展慢慢變好的局面?