python 用 pymysql 執行 case when 實現分組統計


 

 

 1、加載庫、定義函數

import pandas as pd import pymysql def mycursor(db_name=None): '''連接數據庫,創建游標''' config = dict(zip(['host', 'user', 'port', 'password'], ['192.168.137.155', 'shanger', 3306, '0123'])) config.update(database=db_name) connection = pymysql.connect(**config) cursor = connection.cursor() return cursor def use(db_name): '''切換數據庫,返回游標''' return mycursor(db_name)  def query(sql): '''以數據框形式返回查詢據結果''' cursor.execute(sql) data = cursor.fetchall() # 以元組形式返回查詢數據 header = [t[0] for t in cursor.description] df = pd.DataFrame(list(data), columns=header) # pd.DataFrem 對列表具有更好的兼容性 return df  def select_all_from(table): sql = f'select * from {table};' return query(sql)

 

2、統計

 

cursor = use('sql123')   # 切換數據庫
 select_all_from('poptbl')  # 查看所有記錄

 

分組統計

 

sql = ''' select case pref_name when '德島' then '四國' when '香川' then '四國' when '愛媛' then '四國' when '高知' then '四國' when '福岡' then '九州' when '佐賀' then '九州' when '長崎' then '九州' else '其他' end as 地區, sum(population) as 人口數 from poptbl group by 1; ''' query(sql).sort_values(by='人口數', ascending=False)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM