pandas的数据获取及保存

表格的读取及保存

一、读取表格

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

pandas读取出来的数据直接是数据框格式,方便后续的数据处理和分析

可以快速的将数据保存为CSV或者EXCEL格式

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

读取CSV时,注意编码,常用编码为utf-8,gbk,gbk2312等

1.读取csv文件

df = pd.read_csv('路径',encoding='',dtype={'':})

encoding表示字符集(编码),dtype可以选择每行或列以什么数据类型读取

例:df = pd.read_csv(r'../云开见明Python数据分析师课程数据(仅与云开见明Python数据分析师配套)/第三章/meal_order_info.csv',

encoding='gbk',dtype={'info_id':str,'emp_id':str})

一般会在路径前加r:声明后面的字符串是普通字符串,不然可能会被识别为转义字符

output_content = open(r"C:\learn\test.txt", "a")

除此之外还可以双斜杠转义:output_content = open("C:\\learn\\test.txt", "a")

或者使用反斜杠:output_content = open("C:/learn/test.txt", "a")

df.dtypes可以查询所有列索引下的数据类型

2.读取excel文件

df = pd.read_excel('路径',sheet_name='',dtype={'':})

值得一提的是,新版本的pandas库包中已经删除了read_excel方法下的encoding参数,所以无需选择编码

例:df = pd.read_excel('../云开见明Python数据分析师课程数据(仅与云开见明Python数据分析师配套)/第三章/meal_order_detail.xlsx',

sheet_name = 'meal_order_detail1',dtype={'detail_id':str})

关于路径:

读取过程中,如果路径或文件名过长,可以考虑使用os库包

os.getcwd():可以获取当前python所在路径

os.chdir('路径'):可以更改当前路径

二、保存表格

语法:df.to_csv('保存后的命名',index=False,encoding='gbk')

df.to_excel('保存后的命名',index=False,encoding='utf8')

值得一提,to_excel中还是需要选择字符集类型

数据库的读取及保存

一、读取数据库

读取数据库需要用到两个库包:

 

import pymysql
from sqlalchemy import create_engine(建立连接

第一个pymysql库包在Anaconda环境中没有,所以要自己下载,流程如下:

pandas的数据获取及保存

 

 

 

pandas的数据获取及保存

 

 

和上述图片相同,即说明库包安装成功!

建立连接语法:create_engine('mysql+pymysql://user:password@IP:3306/数据库名字?charset=utf8')

:connect = create_engine('mysql+pymysql://root:Dongwenbo123@localhost:3306/myemployees?charset=utf8')

sql = 'select * from jobs'

df1 = pd.read_sql(sql,connect)

sql表示将myemployees数据库下的jobs表格中的所有内容全部赋值给sql变量

然后使用pd.read_sql来读取

每次都这样读取很麻烦,所以写个函数:

 

def query(table):
host = 'localhost'
user = 'root'
password = 'Dongwenbo123'
database = 'myemployees'
port = 3306
connect = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(user,password,host,port,database))
sql = 'select * from ' + str(table)
results = pd.read_sql(sql,connect)
return results

 

二、保存到数据库

 

 

语法:df.to_sql(name='保存后的文件命名',con=connect,index=False,if_exists='replace')

参数解读:

df为数据表的名字

index=False表示下标目录不保存进数据库(一般都不保存)

if_exists有三个参数:

1、replace(如果数据库中有重名表格,则替换)

2、fail(如果数据库中有重名表格,则什么都不做)

3、append:(如果数据库中有重名表格,则将数据追加到原表的后面)

参数默认为fail,一般推荐使用replace或者fail

 

上一篇:关于pd.read_csv()保存路径问题


下一篇:Python计算每个班级的前三名