数据分析入门之python读写不同数据源的数据

1、读写数据库数据

1.1、数据库链接设置

  • pandas提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接。SQLAlchemy配合相应数据库的Python连接工具(例如MySQL数据库需要安装mysqlclient或者pymysql库),使用create_engine函数,建立一个数据库连接。

  • creat_engine中填入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串的格式如下:

数据库产品名+连接工具名://用户名:密码@数据库IP地址:数据库端口号/数据库名称?charset = 数据库数据编码

数据库参数如图所示:
在这里插入图片描述
链接本地数据库:

import pandas as pd
from sqlalchemy import create_engine

engin = create_engine('mysql+pymysql://root:[email protected]:3306/test?charset=utf8')

参数说明:

参数 说明
mysql+pymysql mysql数据库+链接数据库工具
root 用户名
123456 自定义密码
127.0.0.1 本地主机,也可以用localhost
test 存放数据的文件
charset=utf8 设置编码方式为utf-8

查看链接状况:
在这里插入图片描述
数据库链接成功!!!

提示: 如果没有连接成功,检查一下是否安装了pymysql这个工具,可以使用pip install pymysql 安装。

1.2、数据库数据读取

1.2.1、read_sql_table

  • 只能够读取数据库的某一个表格,不能实现查询的操作。
  • pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, columns=None)
pd.read_sql_table('meal_order_detail1',con=engin)

1.2.2、read_sql_query

  • 只能实现查询操作,不能直接读取数据库中的某个表。
  • pandas.read_sql_query(sql, con, index_col=None, coerce_float=True)
pd.read_sql_query('select * from meal_order_detail1',con=engin)

1.2.3、read_sql

  • 是两者的综合,既能够读取数据库中的某一个表,也能够实现查询操作。
  • pandas.read_sql(sql, con, index_col=None, coerce_float=True, columns=None)
pd.read_sql('meal_order_detail1',con=engin)
pd.read_sql('select * from meal_order_detail1',con=engin)

1.2.4、读取数据库结果

在这里插入图片描述

1.2.5、三者区别

  • pandas三个数据库数据读取函数的参数几乎完全一致,唯一的区别在于传入的是语句还是表名。
参数名称 说明
sql or table_name 接收string。表示读取的数据的表名或者sql语句。无默认
con 接收数据库连接。表示数据库连接信息。无默认
index_col 接收int,sequence或者False。表示设定的列作为行名,如果是一个数列则是多重索引。默认为None
coerce_float 接收boolean。将数据库中的decimal类型的数据转换为pandas中的float64类型的数据。默认为True
columns 接收list。表示读取数据的列名。默认为None

1.3、数据库数据存储

  • 数据库数据读取有三个函数,但数据存储则只有一个to_sql方法
  • DataFrame.to_sql(name, con, schema=None, if_exists=’fail’, index=True, index_label=None, dtype=None)
data = pd.read_sql('meal_order_detail1',con=engin)
data.to_sql('new_data', con=engin, if_exists='replace')#if_exists='replace',如果原文件存在,取代掉它

注意: 命名是不要出现大写,数据库会默认为小写!



2、读写csv文件

  • 文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
  • csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。

2.1、读取csv数据

  • read_table和read_csv常用参数及其说明
参数名称 说明
filepath 接收string。代表文件路径。无默认
sep 接收string。代表分隔符。read_csv默认为“,”,read_table默认为制表符“[Tab]”
header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别
names 接收array。表示列名。默认为None
index_col 接收int、sequence或False。表示索引列的位置,取值为sequence则代表多重索引。默认为None
dtype 接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None
engine 接收c或者python。代表数据解析引擎。默认为c

2.1.1、使用read_table来读取文本文件

  • pandas.read_table(filepath_or_buffer, sep=’\t’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)
pd.read_table('./meal_order_info.csv',sep=',',encoding='gbk')

2.1.2、使用read_csv函数来读取csv文件

pandas.read_csv(filepath_or_buffer, sep=,, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)

2.2、文本文件储存

  • 文本文件的存储和读取类似,结构化数据可以通过pandas中的to_csv函数实现以csv文件格式存储文件
  • DataFrame.to_csv(path_or_buf=None, sep=’,’, na_rep=”, columns=None, header=True, index=True,index_label=None,mode=’w’,encoding=None)
参数名称 说明
path_or_buf 接收string。代表文件路径。无默认
sep 接收string。代表分隔符。默认为“,”
na_rep 接收string。代表缺失值。默认为“”
columns 接收list。代表写出的列名。默认为None
header 接收boolean,代表是否将列名写出。默认为True
index 接收boolean,代表是否将行名(索引)写出。默认为True
index_labels 接收sequence。表示索引名。默认为None
mode 接收特定string。代表数据写入模式。默认为w
encoding 接收特定string。代表存储文件的编码格式。默认为None


3、读写Excel文件

3.1、Excel文件读取

  • pandas提供了read_excel函数来读取“xls”“xlsx”两种Excel文件。
  • pandas.read_excel(io, sheetname=0, header=0, index_col=None)
参数名称 说明
io 接收string。表示文件路径。无默认
sheetname 接收string、int。代表excel表内数据的分表位置。默认为0
header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别
names 接收int、sequence或者False。表示索引列的位置,取值为sequence则代表多重索引。默认为None
index_col 接收int、sequence或者False。表示索引列的位置,取值为sequence则代表多重索引。默认为None
dtype 接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None
pd.read_excel('./meal_order_detail.xlsx')

3.2、Excel文件储存

  • 将文件存储为Excel文件,可以使用to_excel方法。其语法格式如下:
  • DataFrame.to_excel(excel_writer=None, sheetname=None’, na_rep=”, header=True, index=True, index_label=None, mode=’w’, encoding=None)
  • to_csv方法的常用参数基本一致,区别之处在于指定存储文件的文件路径参数名称为excel_writer,并且没有sep参数,增加了一个sheetnames参数用来指定存储的Excel sheet的名称,默认为sheet1。

(1) 写入单个sheetname

data = pd.read_excel('./meal_order_detail.xlsx')
data.to_excel('new_data.xlsx',sheet_name='a')

(2) 写入多个sheetname

with pd.ExcelWriter('./table.xlsx') as w:
    data.to_excel(w,sheet_name='a')
    data.to_excel(w,sheet_name='b')
发布了62 篇原创文章 · 获赞 25 · 访问量 9295

猜你喜欢

转载自blog.csdn.net/ayouleyang/article/details/104063116