Python 2.7_pandas串連MySQL資料處理_20161229

來源:互聯網
上載者:User

標籤:ldb   port   技術   src   engine   圖表   line   tab   user   

在我本地Mysql_local_db資料庫建立了一個pandas資料表用來對pandas模組的學習

1、建立表

CREATE TABLE pandastest(城市 VARCHAR(255),使用者ID INT(19),訂單日期 DATE,金額 DECIMAL(19,4),金額區間 VARCHAR(255),訂單數 INT(19),上次訂單日期 DATE,距上次訂單天數 INT(19),上次金額 DECIMAL(19,4),距上次訂單間隔區間 VARCHAR(255),品類數 INT(19),KEY city (城市),KEY res_id(使用者ID))ENGINE=INNODB DEFAULT CHARSET=utf8;

 2、Kettle匯入測試資料 對資料進行了處理

3、執行SQL查詢資料

4、Pycharm中編寫代碼

用pandas模組進行串連MySQL資料庫  numpy 模組進行建立數組 matplotlib進行繪圖

代碼如下:

#coding:utf-8import sysimport MySQLdbfrom datetime import datetimeimport numpy as npimport matplotlib.pyplot as pltimport pandas as pd#系統編碼置為‘utf-8‘reload(sys)sys.setdefaultencoding(‘utf-8‘)#串連mysql 其中conn為pandas模組 read_sql方法的第二個參數conn=MySQLdb.connect(host=‘127.0.0.1‘,user=‘root‘,passwd=‘密碼‘,port=3306,db=‘local_db‘,charset=‘utf8‘)sql=‘‘‘    SELECT 城市,使用者ID,訂單日期,金額,金額區間,訂單數    FROM  pandastest    WHERE 訂單日期<‘2016-12-26‘    limit 10000‘‘‘#用pandas模組中read_sql方法擷取資料表(含表頭和資料) real_sql 包含兩個參數 一個是執行的sql 這裡用sql變數代替 也可用字串代替 一個是con=conndf = pd.read_sql(sql, con=conn)conn.close()#練習對df中訂單日期欄位進行拆分成年月日操作 for迴圈為遍曆日期型資料 因此用datetime模組中的strftime方法將日期型轉換為字元型date_time=pd.DataFrame((x.strftime("%Y-%m-%d").split(‘-‘) for x in df[‘訂單日期‘]),columns=[‘year‘,‘month‘,‘day‘])#將date_time拆分開後的年月日和df的資料橫行合并df=pd.merge(df,date_time,right_index=True, left_index=True)print df#按金額區間進行匯總jinequjian=df.groupby(‘金額區間‘)[‘金額區間‘].agg(len)print jinequjian#圖表字型為華文細黑 字型大小為11plt.rc(‘font‘, family=‘STXihei‘, size=11)#建立一個一維數組a=np.array([1,2,3,4])#建立橫條圖 資料來源為jinequjian這個變數(金額區間匯總) 設定顏色 透明度 置中對齊和圖表邊框plt.barh([1,2,3,4],jinequjian,color=‘#052B6C‘,alpha=0.8,align=‘center‘,edgecolor=‘white‘)#y軸標題plt.ylabel(‘金額區間‘)#x軸標題plt.xlabel(‘客戶數‘)#x軸長度plt.xlim(0,8000)#y軸長度plt.ylim(0,6)#圖表的標題plt.title(‘各金額區間客戶分布情況‘)#圖例及顯示位置plt.legend([‘客戶數‘], loc=‘upper right‘)#背景網格線的顏色樣式 尺寸 和透明度plt.grid(color=‘#375589‘,linestyle=‘--‘, linewidth=2,axis=‘y‘,alpha=0.4)#設定y軸上的資料分類名稱和金額區間group by 的欄位保持一致plt.yticks(a,(‘(000到500元含)‘,‘(500到1000元含)‘,‘(1000到1500元含)‘,‘(1500元以上)‘))#展現表plt.show()

 

 

Python 2.7_pandas串連MySQL資料處理_20161229

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.