网站App平台注册用户分析(从MySQL中导入数据)

导入MySQL数据

    1. 运行MySQL,输入密码登录进去,然后使用CREATE DATABASE命令创建数据库。
      CREATE DATABASE test;(该命令创建了一个空的数据库test)
  • 2.导入数据到刚刚创建的空数据库中。
    source D:/user.sql(此处source后面的文件路径为要导入的sql数据文件的路径,文章后面会给出该sql文件,供读者下载使用)
    在这里插入图片描述
    (当输入上面的SQL命令后,就会导入SQL文件,由于数据很多,所以需要导入的时间大概有几分钟,导入的过程中,会显示上述页面。)

  • 3.数据导入后可以使用以下SQL语句查询表中的前5条数据。
    select * from uesr limit 5;
    在这里插入图片描述
    (输入上述命令就会显示上述界面)

    1. 用python连接MySQL数据库
import pymysql
import pandas as pd
# 连接MYSQL数据库
conn = pymysql.connect(host = 'localhost', user = 'root', passwd = 'yilongmysql', db = 'test', charset = 'utf8')
# 变量conn为构造的数据库对象
sql_query = 'SELECT * FROM test.user'  # SQL查询语句
data = pd.read_sql(sql_query, con = conn)  # 读取mysql数据
conn.close()  # 关闭数据库的连接
print(data.head())

上述语句中需要修改的参数代码是passwd和db,即指定MySQL密码和项目使用的数据库(此处使用的就是刚刚创建的test数据库)

    1. 完整分析代码。
import pymysql
import pandas as pd
import matplotlib.pyplot as plt
#连接MySQL数据库,指定密码(passwd)和数据库(db)
conn = pymysql.connect(host = "localhost",user = 'root',passwd ='yilongmysql',db = 'test',charset="utf8")
sql_query = 'SELECT * FROM test.user'     #SQL查询语句
data = pd.read_sql(sql_query, con=conn)   #读取MySQL数据
conn.close()         # 获取数据后,关闭数据库连接
data=data[['username','addtime']]         #提取指定列数据
data.rename(columns = {'addtime':'注册日期','username':'用户数量'},inplace=True)  #列重命名
data['注册日期'] = pd.to_datetime(data['注册日期']) #将数据类型转换为日期类型
data = data.set_index('注册日期') # 将日期设置为索引


#按月统计每一年的注册用户
index=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
df_2017=data['2017']
df_2017=df_2017.resample('M').size().to_period('M')
df_2017.index=index
df_2018=data['2018']
df_2018=df_2018.resample('M').size().to_period('M')
df_2018.index=index
df_2019=data['2019']
df_2019=df_2019.resample('M').size().to_period('M')
df_2019.index=index
dfs=pd.concat([df_2017,df_2018,df_2019],axis=1)
#设置列索引
dfs.columns=['2017年','2018年','2019年']
dfs.to_excel('result2.xlsx',index=False)# 导出数据为Excel文件


#绘制折线图
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.title('年度注册用户分析图')
x=index
y1=dfs['2017年']
y2=dfs['2018年']
y3=dfs['2019年']
plt.plot(x,y1,label='2017年',color='b',marker='o')
plt.plot(x,y2,label='2018年',color='g',marker='o')
plt.plot(x,y3,label='2019年',color='r',marker='o')
#添加文本标签
for a,b1,b2,b3 in zip(x,y1,y2,y3):
    plt.text(a,b1+200,b1,ha = 'center',va = 'bottom',fontsize=8)
    plt.text(a,b2+100,b2,ha='center', va='bottom', fontsize=8)
    plt.text(a,b3+200,b3,ha='center', va='bottom', fontsize=8)
x = range(0, 12, 1)
plt.xlabel('注册日期')
plt.ylabel('用户数量')
plt.legend()
plt.show()
    1. 运行效果图:
      在这里插入图片描述
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在Django,可以使用Python的内置csv模块来读取CSV文件,然后使用Django的ORM(对象关系映射)将数据保存到MySQL数据。以下是示例代码: 1. 首先,创建一个Django命令来执行导入操作。在app目录下创建一个名为“importcsv”的文件夹,并在其创建一个名为“management”的文件夹。在“management”文件夹创建一个名为“commands”的文件夹,并在其创建一个名为“import_csv.py”的Python文件。 ```python # import_csv.py from django.core.management.base import BaseCommand import csv from app.models import MyModel class Command(BaseCommand): help = 'Import data from CSV file' def add_arguments(self, parser): parser.add_argument('csv_file', type=str) def handle(self, *args, **options): csv_file = options['csv_file'] with open(csv_file, 'r') as f: reader = csv.reader(f) for row in reader: obj = MyModel() obj.field1 = row[0] obj.field2 = row[1] obj.field3 = row[2] obj.save() self.stdout.write(self.style.SUCCESS('Data imported successfully!')) ``` 2. 在models.py文件定义模型类,以便在导入CSV文件时将数据保存到MySQL数据。 ```python # models.py from django.db import models class MyModel(models.Model): field1 = models.CharField(max_length=100) field2 = models.CharField(max_length=100) field3 = models.CharField(max_length=100) ``` 3. 运行命令,将CSV文件导入MySQL数据库。 ```bash python manage.py import_csv /path/to/csv/file.csv ``` 其,/path/to/csv/file.csv是CSV文件的路径。 这个命令将打开CSV文件,读取每一行并将数据保存到MySQL数据。可以根据需要修改代码以处理更复杂的CSV文件格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想清楚再敲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值