xingnie

数据清洗之文件操作

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

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 [ ]:
 

分类:

技术点:

相关文章: