前期准备:
#导入os模块
import os
#获得当前路径地址
os.getcwd()
# 更改文件路劲
os.chdir('F:\python\数据清洗\代码和数据')
#设置最大显示列数
pd.set_option('display.max_columns', 20)
#设置最大显示行数
pd.set_option('display.max_rows', 50)
• 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)
•使用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)
• 使用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老师