------------恢复内容开始------------

项目 内容
课程班级博客链接 20级数据班(本) 
 这个作业要求链接   python数据分析第四周作业要求
 博客名称  2003031135—杨楠—Python数据分析第四周作业—matplotlib的学习
 要求  每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)

 

 

 

 

 

 

一、拓展阅读

1.小白必看!超详细MySQL下载安装教程

本篇文章介绍了怎样下载和安装MySQL,其中5.0和8.0版本有一些不同,8.0在启动MySQL时会出现一些问题,需要输入

mysqld --initialize-insecure --user=mysql
建立默认数据库
还需输入
mysqld -install
安装数据库
需要在MySQL目录文件下创建一个ini文件,配置相关环境,文件采用txt形式保存,输入内容如下
[mysql]  
# 设置 mysql 客户端默认字符集  
default-character-set=utf8  

[mysqld]  
#设置 3306 端口  
port = 3306  

# 设置 mysql 的安装目录  
basedir= 【安装目录】

# 设置 mysql 数据库的数据的存放目录  
datadir= 【安装目录】\data  

# 允许最大连接数  
max_connections=200  

# 服务端使用的字符集默认为 8 比特编码的 latin1 字符集  
character-set-server=utf8  

# 创建新表时将使用的默认存储引擎  
default-storage-engine=INNODB
还需配置环境变量,用于快速启动MySq


2.MySQL教程
本篇文章中介绍了MySQL中的来源和相关术语,进一步了解了MySQL的相关知识

3.MySQL卸载
本篇文章介绍怎样完全干净地卸载MySQL,,方便如果后面不需要MySQL后能干净地卸载

二、作业
1.安装好MySQL,连接上Navicat。
2.完成课本练习(代码4-1~3/4-9~31)。
代码4-1~3
 1 #4-1 SQLAIchemy连接MYSQL数据库的代码
 2 from sqlalchemy import create_engine
 3 #创建一个MySQL连接器,用户名为root,密码为:xianbaobao520
 4 #地址为127.0.0.1,数据库名称为testdb,编码为UTF-8
 5 engine = create_engine('mysql+pymysql://root:xianbaobao520@127.0.0.1:3306/testdb?charset=utf8')
 6 print(engine)
 7 
 8 #4-2使用函数读取数据库数据
 9 import pandas as pd
10 formlist = pd.read_sql_query('show tables',con=engine)
11 print("testdb数据库数据表清单为:','\n'",formlist)
12 
13 detail1=pd.read_sql_table('meal_order_detail1',con=engine)
14 print('使用read_sql_table读取订单的长度为:',len(detail1))
15 
16 detail2=pd.read_sql('select * from meal_order_detail2',con=engine)
17 print('使用read_sql函数+SQL语句读取的订单详情表长度为:',len(detail2))
18 detail3=pd.read_sql('meal_order_detail3',con=engine)
19 print('使用read_sql函数+表格名称读取的订单详情表长度为:',len(detail3))
20 
21 #4-3使用to_sql方法写入数据
22 detail1.to_sql('test1',con=engine,index = False,if_exists='replace')
23 formlist1 = pd.read_sql_query('show table',con = engine)
24 print("新增一个表格后,testdb数据库数据表清单为:','\n'",formlist1)

结果截图:

代码4-9~31

 1 #4-9读取订单详情表
 2 from sqlalchemy import create_engine
 3 import pandas as pd
 4 engine = create_engine('mysql+pymysql://root:xianbaobao520@127.0.0.1:3306/testdb?charset=utf8')
 5 order1=pd.read_sql_table('meal_order_detail1',con=engine)
 6 print("订单详情表1的长度为:",len(order1))
 7 order2=pd.read_sql_table('meal_order_detail2',con=engine)
 8 print("订单详情表2的长度为:",len(order2))
 9 order3=pd.read_sql_table('meal_order_detail1',con=engine)
10 print("订单详情表3的长度为:",len(order3))
11 
12 #4-10读取订单信息表
13 from sqlalchemy import create_engine
14 import pandas as pd
15 engine = create_engine('mysql+pymysql://root:xianbaobao520@127.0.0.1:3306/testdb?charset=utf8')
16 orderInfo=pd.read_table('C:/Users/YANGNAN/Desktop/meal_order_info (1).csv',sep= ',',encoding='gbk')
17 print('订单长度为:',len(orderInfo))
18 
19 #4-11读取用户信息表
20 uesrInfo=pd.read_excel('C:/Users/YANGNAN/Desktop/users (1).xlsx',sheet_name='users1')
21 print('客户信息表的长度为:',len(uesrInfo))
22 
23 
24 #4-12~31
25 from sqlalchemy import create_engine
26 import pandas as pd
27 engine = create_engine('mysql+pymysql://root:xianbaobao520@127.0.0.1:3306/testdb?charset=utf8')
28 detail1=pd.read_sql_table('meal_order_detail1',con=engine)
29 print('订单详情表的所有值为:‘,’\n',detail1.index)
30 print('订单详情表的所有值为:‘,‘\n',detail1.values)
31 print('订单详情表的列名为:’,‘\n',detail1.columns)
32 print('订单详情表的数据类型为:’,‘\n',detail1.dtypes)
33 print('订单详情表的元素个数为:',detail1.size)
34 print('订单详情表的形状为:',detail1.ndim)
35 print('订单详情表的形状为:',detail1.shape)
36 print('订单详情表转制后的形状为:',detail1.T.shape)
37 print('订单详情表中后5行元素为:’,‘\n',detail1.tail())
38 dishes_name1=detail1.loc[:,'dishes_name']
39 print('使用loc提取dishes——name列size的列为;',dishes_name1.size)
40 dishes_name2=detail1.iloc[:,3]
41 print('使用iloc提取第三列的size为:',dishes_name2.size)
42 
43 orderDish1=detail1.loc[:,['order_id','dishes_name']]
44 print("使用loc提取order_name列和dishes_name列的size的列为",orderDish1.size)
45 
46 orderDish2=detail1.iloc[:,[1,3]]
47 
48 print('使用iloc提取第一列和第三列的行名为3的size的列为',orderDish2.size)
49 print('列名为order_id和dishes_name的行名为3的数据为:','\n',detail1.loc[3,['order_id','dishes_name']])
50 print('列名为order_id和dishes_name的行名为2,3,4,5,6的数据为:','\n',detail1.loc[2:6,['order_id','dishes_name']])
51 print('列位置为1和3,行位置为3的数据为:\n',detail1.iloc[3,[1,3]])
52 print('列位置为1和3,行位置为2,3,4,5,6的数据为:\n',detail1.iloc[2:7,[1,3]])
53 print('detail中order为order_id为458的dishes_name为:\n',detail1.loc[detail1['order_id']=='458',['order_id','dishes_name']])
54 print('detail中order_id为458的第1,5列数据为:\n',detail1.iloc[(detail1['order_id']=='458').values,[1,5]])
55 print('列名为dishes_name行名为 2,3,4,5,6的数据为:\n',detail1.loc[2:6,'dishes_name'])
56 print('列位置为5,行位置为2~6的数据为:\n',detail1.iloc[2:6,5])
57 print('列名为dishes_name行名为 2,3,4,5,6的数据为:\n',detail1.loc[2:6,'dishes_name'])
58 print('列位置为5,行位置为2~6的数据为:\n',detail1.iloc[2:6,5])
59 
60 detail1.loc[detail1['order_id']=='458','ordeer_id'] = '45800'
61 print('更改后detail中order_id为458的order_id为:\n',detail1.loc[detail1['order_id']=='458','order_id'])
62 print('更改后detail中order_id为45800的order_id为:\n',detail1.loc[detail1['order_id']=='45800','order_id'])
63 
64 detail1['payment'] = detail1['counts']*detail1['amounts']
65 print('detail新增列payment的前5行为:','\n',detail1['payment'].head())
66 
67 detail1['pay_way'] = '现金支付'
68 print('detail新增列pay_way的前5行为:','\n',detail1['pay_way'].head())
69 print('删除pay_way前detail的列索引为:','\n',detail1.columns)
70 
71 detail1.drop(labels = 'pay_way',axis = 1,inplace = True)
72 print('删除pay_way后detail的列索引为:','\n',detail1.columns)
73 
74 print('删除1~10行前detail的长度为:',len(detail1))
75 detail1.drop(labels = range(1,11),axis = 0,inplace = True)
76 print('删除1~10行后detail的长度为:',len(detail1))

结果截图: