2003031102-子平-python数据分析第七周作业

项目   要求 
课程班级博客链接 20级数据班(本)
这个作业要求链接 Python数据分析第七周作业
博客名称 2003031102—子平—Python数据分析第七周作业—MySQL的安装以及使用
要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)

 

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

     

     4-9~31

  •  1 from sqlalchemy import create_engine
     2 #创建一个MySQL连接器,用户名为root,密码为root1234
     3 #地址为127.0.0.1数据库名称为testdb,编码为UTF—8
     4 engine = create_engine('mysql+pymysql://root:root1234@127.0.0.1:3306/testdb?charset=utf8')
     5 import pandas as pd
     6 
     7 #使用read_sql_table读取订单详情表
     8 order1 = pd.read_sql_table('meal_order_detail1',con = engine)
     9 print('订单详情表1的长度为:',len(order1))
    10 order2 = pd.read_sql_table('meal_order_detail2',con = engine)
    11 print('订单详情表2的长度为:',len(order2))
    12 order3 = pd.read_sql_table('meal_order_detail3',con = engine)
    13 print('订单详情表3的长度为:',len(order3))
    14 
    15 #使用read_table读取订单信息表
    16 orderInfo = pd.read_table('D:/Users/lenovo/Desktop/meal_order_info.csv',sep = ',',encoding = 'gbk')
    17 print('订单信息表的长度为:',len(orderInfo))
    18 
    19 userInfo = pd.read_excel('D:/Users/lenovo/Desktop/users.xlsx',sheet_name = 'users1')
    20 print('客户信息表的长度为:',len(userInfo))
    21 
    22 detail = pd.read_sql_table('meal_order_detail1',con = engine)
    23 '''print('订单详情的索引表为:',detail.index)
    24 print('订单详情表的所有值为:','\n',detail.values)
    25 print('订单详情表列名为:','\n',detail.columns)
    26 print('订单详情表的数据类型为:','\n',detail.dtypes)'''
    27 
    28 #查看DataFrame的元素个数
    29 print('订单详情表的元素个数为:',detail.size)
    30 print('订单详情表的维度数为:',detail.ndim)#查看DataFrame的维度数
    31 print('订单详情表的形状为:',detail.shape)#查看DataFrame的形状
    32 
    33 print('订单详情表转置前形状为:',detail.shape)
    34 print('订单详情表转置后形状为:',detail.T.shape)
    35 
    36 #使用字典访问的方式取出orderInfo中的某一列
    37 order_id = detail['order_id']
    38 print('订单详情表中的order_id形状为:','\n',order_id.shape)
    39 
    40 #使用访问属性的方式取出orderInfo中的菜品名称列
    41 dishes_name = detail.dishes_name
    42 print('订单详情表中的dishes_name的形状为:','\n',dishes_name.shape)
    43 
    44 dishes_name5 = detail['dishes_name'][:5]
    45 print('订单详情表中的dishes_name前5个元素为;','\n',dishes_name5)
    46 
    47 orderDish = detail[['order_id','dishes_name']][:5]
    48 print('订单详情表中的order_id和dishes_name前5个元素为;','\n',orderDish)
    49 
    50 order5 = detail[:][1:6]
    51 print('订单详情表中的1~6元素为;','\n',order5)
    52 
    53 print('订单详情表中的前5行数据为;','\n',detail.head())
    54 print('订单详情表中的后5行数据为;','\n',detail.tail())
    55 
    56 dishes_name1 = detail.loc[:,'dishes_name']
    57 print('使用loc提取dishes_name列的size为:',dishes_name1.size)
    58 dishes_name2 = detail.iloc[:,3]
    59 print('使用iloc提取第3列列的size为:',dishes_name2.size)
    60 
    61 orderDish1 = detail.loc[:,['order_id','dishes_name']]
    62 print('使用loc提取order_id和dishes_name列地size为;',orderDish1.size)
    63 orderDish2 = detail.iloc[:,[1,3]]
    64 print('使用iloc提取第1列和第3列地size为;',orderDish2.size)
    65 
    66 print('列名为order_id和dishes_name的行名为3的数据为:\n',detail.loc[3,['order_id','dishes_name']])
    67 print('列名为order_id和dishes_name的行名为2,3,4,5,6的数据为:\n',detail.loc[2:6,['order_id','dishes_name']])
    68 print('列位置为1和3,,行位置为3的数据为:\n',detail.iloc[3,[1,3]])
    69 print('列位置为1和3,,行位置为2,3,4,5,6的数据为:\n',detail.iloc[2:7,[1,3]])
    70 
    71 #loc内部传入表达式
    72 print('detail中order_id为458的dishes_name为:\n',detail.loc[detail['order_id']=='458',['order_id','dishes_name']])
    73 #错误示例如下:
    74 #print('detail中order_id为458的第1、5列数据为:\n',detail.iloc[detail['order_id']=='458',[1,5]])
    75 
    76 print('detail中order_id为458的第1,5列数据为:\n',detail.iloc[(detail['order_id']=='458').values,[1,5]])
    77 
    78 print('列名为dishes_name行名为 2,3,4,5,6的数据为:\n',detail.loc[2:6,'dishes_name'])
    79 print('列位置为5,行位置为2~6的数据为:\n',detail.iloc[2:6,5])
    80 #print('列位置为5,行名为2~6的数据为:', '\n',detail.ix[2:6,5])    #pandas的1.0.0版本后,已经对ix进行了升级和重构。
    81 
    82 #将ordeer_id为458的变换为45800
    83 detail.loc[detail['order_id']=='458','ordeer_id'] = '45800'
    84 print('更改后detail中order_id为458的order_id为:\n',detail.loc[detail['order_id']=='458','order_id'])
    85 print('更改后detail中order_id为45800的order_id为:\n',detail.loc[detail['order_id']=='45800','order_id'])
    86 
    87 detail['payment'] = detail['counts']*detail['amounts']
    88 print('detail新增列payment的前5行为:','\n',detail['payment'].head())
    89 
    90 detail['pay_way'] = '现金支付'
    91 print('detail新增列pay_way的前5行为:','\n',detail['pay_way'].head())
    92 
    93 print('删除pay_way前detail的列索引为:','\n',detail.columns)
    94 detail.drop(labels = 'pay_way',axis = 1,inplace = True)
    95 print('删除pay_way后detail的列索引为:','\n',detail.columns)
    96 
    97 print('删除1~10行前detail的长度为:',len(detail))
    98 detail.drop(labels = range(1,11),axis = 0,inplace = True)
    99 print('删除1~10行后detail的长度为:',len(detail))

     

     

     

     

     

     

     

     

     

posted @ 2022-04-20 12:22  岁晏  阅读(55)  评论(0)    收藏  举报