zoukankan      html  css  js  c++  java
  • python数据分析-连接mysql

    # -*- coding: utf-8 -*-
    """
    Created on Thu Aug 27 08:46:26 2015
    @author: TBKKEN
    """
    import os;
    import pandas;
    
    import MySQLdb;
    
    import matplotlib;
    import matplotlib.pyplot as plt;
    
    connection = MySQLdb.connect(
        host='127.0.0.1',
        user='root',
        passwd='root',
        db='7.1',
        charset='utf8'
    );
    #导入数据到MySQL
    #遍历目录,把里面的所有数据入库
    
    rootDir="C:\Python\7.1\";
    def exeSQL(sql):
        print("exeSQL: " + sql)
        connection.query(sql);
        
    for fileName in os.listdir(rootDir): 
        path = os.path.join(rootDir, fileName)     
        if ".txt" in fileName:
            print(path)
            path = path.replace("\", "\\");
            #拿到文件名中的时间字段
            datetime = fileName[0:8];
            tableName = "订购明细" + datetime;
            #建表、导入数据到表中
            exeSQL("drop table if exists " + tableName)
            exeSQL("create table " + tableName + "(订单编号 int, 订购日期 datetime, 用户ID int, 产品 char(8), `单价(元)` int, 数量 int, 订购金额 int);");
            exeSQL("LOAD DATA LOCAL INFILE '" + path + "' INTO TABLE `" + tableName + "` CHARACTER SET 'UTF8' COLUMNS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;");
            
            #建立日订购统计表
            exeSQL("create table if not exists 日订购统计表(统计日期 date, 订购用户数 int, 订购次数 int, 人均订购金额 double, 订购总额 double);");
            exeSQL("delete from 日订购统计表 where 统计日期='" + datetime + "';");
            exeSQL("insert into 日订购统计表 select '" + datetime + "', count(distinct 用户ID), count(用户ID), sum(订购金额)/count(distinct 用户ID), sum(订购金额) from `" + tableName + "`;");
    
    statDay = pandas.read_sql('select * from 日订购统计表;', con=connection);
    #记得用完要关闭连接
    connection.close();
    
    print('
    日订购统计表数据如下:');
    print(statDay);
    
    #绘图
    font = {
        'family' : 'SimHei'
    }
    
    matplotlib.rc('font', **font);
    
    plot1 = plt.plot(statDay['统计日期'], statDay['订购用户数']);
    plot2 = plt.plot(statDay['统计日期'], statDay['订购次数']);
    plot3 = plt.plot(statDay['统计日期'], statDay['人均订购金额']);
    plt.show();
    plt.legend(('订购用户数', '订购次数', '人均订购金额'))
    View Code
  • 相关阅读:
    Webpack笔记(三)——一款破产版脚手架的开发
    Google C++命名规范
    视觉词袋模型(BOVW)
    机器学习之四:决策树
    Zernike不变矩
    互联网产品各阶段的标准流程文档
    机器学习之三:logistic回归(最优化)
    Python
    机器学习之二:K-近邻(KNN)算法
    Python学习之二:Python 与 C 区别
  • 原文地址:https://www.cnblogs.com/qiuyuyu/p/9145897.html
Copyright © 2011-2022 走看看