#----------------------------------------------------- #範例13-9:查詢性別同類的數量group by,查詢性別有幾種distinct #------------------------------------------------- #(1)步驟1:建議:mySQL範例要在anaconda裡面測試(不要再cola測試) #要先安裝:python 3.x版本的安裝mysql的指令:pip install pymysql #(2)步驟2:安裝mySQL #安裝: wamp或xamp #帳號為root,密碼不設定 #(3)步驟3:建立mydb資料庫,匯入scorechi資料表 #(4)步驟4:連線mydb資料庫指令 #import pymysql #conn = pymysql.connect(host="localhost",user="root", password="", db="mydb") #(5)步驟5:查詢scorechi資料表,轉成df指令 #import pandas as pd #df = pd.read_sql_query("select * from scorechi", conn) #(6)分群的方法,有4種、 #第1種: df['gender'].value_counts() :相同數值的數目(Series) #第2種: df['gender'].unique() :相同的幾類資料(Series) #第3種: df['gender'].nunique() :m數值,種類數目(number) #第4種: df.groupby('gender') #------------------------------ #練習1:讀取mySQL資料庫 #------------------------------ #(1)下載檔案:https://acupun.site/lecture/pandas/example/chp10/pratice/scoreChi.xlsx #(2)將excel檔案(scorechi.xlsx)轉成csv #(3)轉成編碼 = utf8檔案 #(4)建立mydb資料庫 #(5)匯入,scorechi.csv #連線mydb資料庫指令 import pymysql conn = pymysql.connect(host='localhost', user='root', password='', db='mydb') #查詢scorechi資料表,轉成df指令 import pandas as pd df = pd.read_sql_query("select * from scorechi", conn) print() print("1-1.顯示全部資料=\n", df) #------------------------------ #練習2:查詢同類的數量group by #(1)分群的方法,有4種、 #第1種: df['gender'].value_counts() :相同數值的數目(Series) #第2種: df['gender'].unique() :相同的幾類資料(Series) #第3種: df['gender'].nunique() :m數值,種類數目(number) #第4種: df.groupby('gender').szie() #SQL:查詢同類的數量 ==> df2 = pd.read_sql_query("select 性別, count(*) from scorechi group by 性別", conn) #Pandas:查詢查詢同類的數量, 方法1 ==> df.groupby('性別').size() #Pandas:查詢同類的數量, 方法2 ==> df['性別'].value_counts() #------------------------------ print() df2 = pd.read_sql_query("select 性別, count(*) from scorechi group by 性別", conn) print("2-1.SQL:查詢同類的數量 =\n", df2) print() print("2-2.Pandas:查詢同類的數量,方法1 =\n", df.groupby('性別').size()) print() print("2-3.Pandas:查詢同類的數量,方法1 =\n", df.groupby('性別').count()) print() print("2-4.Pandas:查詢查詢同類的數量,方法2 =\n", df['性別'].value_counts()) #------------------------------ #練習3:查詢性別有幾種(男,女)?distinct #SQL:查詢性別有幾種? ==> df2 = pd.read_sql_query("select distinct 性別 from scorechi", conn) #Pandas:查詢性別有幾種?==> df['性別'].unique() #------------------------------ print() df2 = pd.read_sql_query("select distinct 性別 from scorechi", conn) print("3-1.SQL:查詢性別有幾種? =\n", df2) print() print("3-2.Pandas:列出性別有幾種,方法3 =\n", df['性別'].unique()) #------------------------------ #練習4:查詢性別有幾種(2種)?nunique() #Pandas:計算同類幾種(數) ==> df['性別'].nunique() #Pandas:計算同類幾種(數) ==> df['性別'].unique().size #------------------------------ print() print("4-1.Pandas:計算同類幾種(數目),方法4 =\n", df['性別'].unique().size) print() print("4-2.Pandas:計算同類幾種(數目),方法4 =\n", df['性別'].nunique()) #關閉連線 conn.close() #--------------------------------------------------------------------