python数据清洗学习笔记--文件读写

python数据清洗学习笔记–文件读写

前期准备:

#导入os模块

import os

#获得当前路径地址

os.getcwd()

# 更改文件路劲

os.chdir('F:\python\数据清洗\代码和数据')

#设置最大显示列数

pd.set_option('display.max_columns', 20)

#设置最大显示行数

pd.set_option('display.max_rows', 50)

csv文件读写

• pandas内置了10多种数据源读取函数,常见的就是CSV和EXCEL

• 使用read_csv方法读取,结果为dataframe格式

• 在读取csv文件时,文件名称尽量是英文

• 参数较多,可以自行控制,但很多时候用默认参数

• 读取csv时,注意编码,常用编码为utf-8、gbk 、gbk2312和gb18030等

• 使用to_csv方法快速保存

df = pd.read_csv(‘xxxxxxx.csv’,encoding= ‘gbk’)
df = pd.read_csv(‘xxxxx.csv’,encoding ='gbk’,nrows=10)
df.to_csv(‘df.csv’,index=False)

#读取csv文件信息

a = pd.read_csv('xxxx.csv', encoding='utf-8')

#查看表信息

a.info()

#数值类常用统计值

a.describe()

#查看表前10行信息

a.head(10)

#查看各列非空值数量

a.count()

 
#仅取读文件的前100行

b = pd.read_csv('xxxx.csv',nrows=100)

 
#保存数据

b.to_csv('b1.csv',encoding='utf-8',index=False)


excel文件读写

•使用read_excel读取,读取后的结果为dataframe格式

• 读取excel文件和csv文件参数大致一样, 但要考虑工作表sheet页

• 参数较多,可以自行控制,但很多时候用默认参数

• 读取excel时,注意编码,常用编码为utf-8、gbk 、gbk2312和gb18030等

• 使用to_excel快速保存为xlsx格式

df =pd.read_excel(‘meal_order_info.xlsx’, sheet_name = ‘sheet1’)
df = pd.read_excel(‘meal_order_info.xlsx’,encoding = ‘utf-8’,nrows=10)
df.to_excel(‘a1.xlsx’, sheet_name=‘sheet1’,index= False,encoding='utf-8)

#读取excel需要注明具体哪一个工作簿,否则就是第一个工作簿

df1 = pd.read_excel('xxxx.xlsx',encoding ='utf-8',sheet_name = 'detail1')

# sheet_name可以为数字,代表第几个工作簿

df1 = pd.read_excel('xxxx.xlsx',encoding ='utf-8',sheet_name=0)

#保存数据

df1.to_excel('a1.xlsx',sheet_name='one',index=False)

	

数据库文件的读写

创建连接,连接MySQL

• 使用sqlalchemy建立连接

• 需要知道数据库的相关参数,如数据库IP地址、用户名和密码等

• 通过pandas中read_sql 函数读入, 读取完以后是dataframe格式

• 通过dataframe的to_sql方法保存

sql = ‘select * from xxxxxx’ #选择数据库中表名称
df1 = pd.read_sql(sql,conn)
df.to_sql(‘testdf’,con = conn, index=False,if_exists= ‘replace’)

#导入相关数据库
	
import pymysql

from sqlalchemy import create_engine

数据库建立连接参数:

conn=create_engine(‘mysql+pymysql://user:passward@IP:3306/test01’)

• root: 用户名

• passward: 密码

• IP : 服务器IP,本地电脑用localhost

• 3306: 端口号

• test01 : 数据库名称

#建立连接

conn = create_engine('mysql+pymysql://root:******@localhost:3306/xxxxxx')

#取读数据

#选择数据库中的表名

sql = 'select * from xxxxxx'

df2 = pd.read_sql(sql,conn)

#df2是一个DataFrame格式

 

## 函数
	
def query(table):

    host ='localhost'

    user ='root'

    password ='****'    #这儿的*是指你的数据库连接密码

    database ='xxxxxxx'   #x为数据库的名称

    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
## 函数
	
def query(database,table):
	
	   host ='localhost'
	
	   user ='root'
	
	   password = '******'
	
	   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

数据保存

df.to_sql(name, con=engine, if_exists=‘replace/append/fail’,index=False)

• name是表名

• con是连接

• if_exists:表如果存在怎么处理。

三个选项 append代表追加, replace代表删除原表,建立新表,fail代表什么都不干

• index=False:不插入索引index

Python是否能将数据写入数据库,很多时候取决于数据库的权限

记录自:python数据清洗实战–Peter老师

发布了29 篇原创文章 · 获赞 7 · 访问量 1205

猜你喜欢

转载自blog.csdn.net/weixin_44390462/article/details/105281610
今日推荐