zoukankan      html  css  js  c++  java
  • 数据清洗文件操作--csv txt文件读写、excel文件读写、数据库文件读写

    数据清洗之文件操作

     
    • 这是一个关于淘宝母婴产品的用户消费行为的数据集,然后基于这个数据集,做数据清洗
     

    csv文件读写

    In [ ]:
    import pandas as pd
    import numpy as np
    import os
    
    In [ ]:
    # 更改文件路劲
    os.chdir('F:CSDN课程内容代码和数据')
    
    In [ ]:
    #设置最大显示列数
    pd.set_option('display.max_columns', 20)
    #设置最大显示行数
    pd.set_option('display.max_rows', 100)
    
    In [ ]:
    # 婴儿信息表
    baby = pd.read_csv('sam_tianchi_mum_baby.csv', encoding='utf-8')#默认将第一行作为表头(列标签),一般用utf-8编码
    
    In [ ]:
    baby.head(10)
    
    In [ ]:
    # 编码为gbk中文编码
    # 订单数据
    order = pd.read_csv('meal_order_info.csv',encoding =  'gbk', dtype = {'info_id':str,'emp_id':str})

    dtype用来改变数据类型
    In [ ]:
    order 
    
    In [ ]:
    #交易表
    baby_trade_history = pd.read_csv('baby_trade_history.csv', nrows=100) #n ro w s读取前100行
    
     
    • 保存数据
    In [ ]:
    baby_trade_history.to_csv('a1.csv',encoding='utf-8',index=False)#建议用utf-8编码或者中文gbk编码,默认是utf-8编码,index=False表示不写出索引行
    
     

    excel文件读写

    In [ ]:
    # 订单数据
    df1 = pd.read_excel('meal_order_detail.xlsx',encoding = 'utf-8',sheet_name = 'meal_order_detail1')# 读取excel需要注明具体哪一个工作簿,否则就是第一个工作簿
    
    In [ ]:
    df1 = pd.read_excel('meal_order_detail.xlsx',encoding = 'utf-8',sheet_name = 0)# sheet_name可以为数字,代表第几个工作簿
    
    In [ ]:
    #保存数据
    
    In [ ]:
    df1.to_excel('a1.xlsx',sheet_name='one',index=False)
    
     

    数据库文件读写

    In [107]:
    #导入相关库
    import pymysql
    from sqlalchemy import create_engine
    
     
    • 按实际情况依次填写MySQL的用户名、密码、IP地址、端口、数据库名
     

    create_engine('mysql+pymysql://user:passward@IP:3306/test01')

    • root 用户名
    • passward --密码
    • IP : 服务区IP(本地 的话就是localhost)
    • 3306: 端口号
    • test01 :数据库名称
    In [108]:
    # 建立连接
    conn = create_engine('mysql+pymysql://root:ly200689081@localhost:3306/test01')
    
     
    • conn = create_engine("mysql+pymysql://{}:{}@{}:{}/{}?charset=gbk".format('root', 'ly200689081', 'localhost', '3306', 'test01'))
    In [114]:
    # 读取数据
    sql = 'select * from meal_order_info'  #选择数据库中表名称
    df1 = pd.read_sql(sql,conn)
    #df1 是个dataframe格式
    
    In [116]:
    # # # 函数
    def query(table):
        host = 'localhost'
        user = 'root'
        password = 'ly200689081'
        database = 'test01'
        port = 3306
        conn = create_engine("mysql+pymysql://{}:{}@{}:{}/{}".format(user, password, host, port, database))
        #SQL语句,可以定制,实现灵活查询
        sql = 'select * from ' + table  #选择数据库中表名称    
        # 使用pandas 的read_sql函数,可以直接将数据存放在dataframe中
        results = pd.read_sql(sql,conn)
        return results
    
    In [117]:
    df2 =  query('appendix')
    
    In [ ]:
     
     

    数据保存

    • df.to_sql(name, con=engine, if_exists='replace/append/fail',index=False)
    • name是表名
    • con是连接
    • if_exists:表如果存在怎么处理 -- append:追加 -- replace:删除原表,建立新表再添加 -- fail:什么都不干
    • index=False:不插入索引index
    In [129]:
    import os
    os.chdir(r'F:CSDN课程内容代码和数据')
    
    In [130]:
    df = pd.read_csv('baby_trade_history.csv')
    
    In [131]:
    try:
        df.to_sql('testdf',con = conn, index= False,if_exists= 'replace')
    except:
        print('error')


    if_exists= 'replace'如果表存在就会覆盖
     
    • Python是否能将数据写入数据库,很多时候取决于数据库的权限
    In [ ]:
     
  • 相关阅读:
    java第二次作业 数组和String类
    java第一次作业
    选择
    latex math
    sum的写法
    qt 4.8.5 vs 2012编译
    物联网笔记四:物联网网络及协议
    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
    物联网学习笔记二:物联网网关
    物联网学习笔记一:物联网入门的必备 7 大概念和技能
  • 原文地址:https://www.cnblogs.com/xingnie/p/12261788.html
Copyright © 2011-2022 走看看