Python笔记------使用pandas进行数据预处理

1、读写数据库数据

pandas提供了读取与存储关系型数据库数据的函数与方法。

除了pandas库外,还需要使用SQLAlchemy库建立对 应的数据库连接。SQLAlchemy配合相应数据库的Python连接工具(例如MySQL数据库需要安装mysqlclient或者 pymysql库),使用create_engine函数,建立一个数据库连接。

creat_engine中填入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串
的格式如下
数据库产品名+连接工具名://用户名:密码@数据库IP地址:数据库端口号/数据库名称?charset = 数据库数据编码
from sqlalchemy import create_engine
## 创建一个mysql连接器,用户名为root,密码为123456,地址为127.0.0.1,数据库名称为testdb,编码为utf-8
engine = create_engine('mysql+pymysql://root:[email protected]:3306/testdb?charset=utf8')
print(engine)

#运行结果
#Engine(mysql+pymysql://root:***@127.0.0.1:3306/testdb?charset=utf8)
1.1数据库数据读取
read_sql既能够读取数据库中的某一个表,也能够实现查询操作。
pandas. read_sql (sql, con, index_col=None, coerce_float=True, columns=None)
 
import pandas as pd
## 使用read_sql读取订单详情表
detail2 = pd.read_sql('select * from meal_order_detail3',con = engine)
print('使用read_sql函数+sql语句读取的订单详情表长度为:',len(detail2))
detail3 = pd.read_sql('meal_order_detail3',con = engine)
print('使用read_sql函数+表格名称读取的订单详情表长度为:',len(detail3))
#结果
#使用read_sql函数+sql语句读取的订单详情表长度为: 3611
#使用read_sql函数+表格名称读取的订单详情表长度为: 3611
1.2.数据库数据存储
DataFrame. to_sql (name, con, schema=None, if_exists=’fail’, index=True, index_label=None, dtype=None)
name:接收string。代表数据库表名。无默认。
con:接收数据库连接。无默认。
if_exists:接收fail,replace,append。fail表示如果表名存在则不执行写入操作;replace表示如果存在,将原数据库表删除,再重新创建;append则表示在原数据库表的基础上追加数据。默认为fail。
index:接收boolean。表示是否将行索引作为数据传入数据库。默认True
detail2.to_sql('test1',con = engine,index = False,if_exists = 'replace')
## 使用read_sql读取test表
formlist1 = pd.read_sql_query('show tables',con = engine)
print('新增一个表格后testdb数据库数据表清单为:','\n',formlist1)
#新增一个表格后testdb数据库数据表清单为: 
#       Tables_in_testdb
# 0  meal_order_detail1
# 1  meal_order_detail2
# 2  meal_order_detail3
# 3               test1
2.文本文件读取
使用read_table来读取文本文件。
pandas. read_table (filepath_or_buffer, sep=’\t’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)
使用read_csv函数来读取csv文件。
pandas. read_csv (filepath_or_buffer, sep=’,’, header=’infer’, names=None, index_col=None, dtype=None, engine=None, nrows=None)
read_table和read_csv函数中的sep参数是指定文本的分隔符的,如果分隔符指定错误,在读取数据的时
候,每一行数据将连成一片。
header参数是用来指定列名的,如果是None则会添加一个默认的列名。
encoding代表文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果编码
指定错误数据将无法读取,IPython解释器会报解析错误。
 
read_excel函数来读取“xls”“xlsx”两种Excel文件。
pandas. read_excel (io, sheetname=0, header=0, index_col=None, names=None, dtype=None)
 
 
文本文件的存储和读取类似,结构化数据可以通过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)
将文件存储为Excel文件,可以使用to_excel方法。其语法格式如下。
DataFrame. to_excel (excel_writer=None, sheetname=None’, na_rep=”, header=True,
index=True, index_label=None, mode=’w’, encoding=None)
 
DataFrame的常用操作
1.1  查看DataFrame的常用属性
values 元素
index 索引
columns 列名
dtypes 类型
size 元素个数
ndim 维度数
shape 数据形状(行列数目)

1.2 查改增删DataFrame数据

查:lociloc访问方式

DataFrame.loc[行索引名称或条件, 列索引名称]

DataFrame. iloc [ 行索引位置 , 列索引位置 ]
 
  iloc和loc区别是iloc接收的必须是行索引和列索引的位置。

 

改:更改DataFrame中的数据,原理是将这部分数据提取出来,重新赋值为新的数据。

##将order_id为458的,变换为45800
detail1.loc[detail1['order_id']=='458','order_id'] = '45800'

 

增:DataFrame添加一列的方法非常简单,只需要新建一个列索引。并对该索引下的数据进行赋值操作即可。 新增的一列值是相同的则直接赋值一个常量即可。

删:删除某列或某行数据需要用到pandas提供的方法drop,drop方法的用法如下。 axis为0时表示删除行,axis为1时表示删除列。

drop(labels, axis=0, level=None, inplace=False, errors='raise')
labels
labels:接收string或array。代表删除的行或列的标签。无默认。
axis
axis:接收0或1。代表操作的轴向。默认为0。
levels
level:接收int或者索引名。代表标签所在级别。默认为None。
 
inplace:接收boolean。代表操作是否对原数据生效。默认为False。

 

1.3 数值型特征的描述性统计

pandas还提供了更加便利的方法来计算均值 ,如detail['amounts'].mean()。
pandas还提供了一个方法叫作describe,能够一次性得出数据框所有数值型特征的非空值数目、均值、
四分位数、标准差。
 
Python笔记------使用pandas进行数据预处理_第1张图片
 

你可能感兴趣的:(python)