Python数据可视化:数据的读取

目录

csv数据

1.文本文件读取

 示例代码:

2. 文本文件存储

​示例代码:

Excel文件数据

1. Excel文件读取

示例代码:

2. Excel文件存储

数据库数据

1. 数据库数据读取

示例代码:

2. 数据库存储

示例代码:


数据的读取是进行数据预处理、数据建模和分析的基础。

对于不同的数据文件,pandas提供了不同函数进行读取。

pandas内置了10余种读写函数。

常见的数据文件格式有3种形式,分别是CSV文件、Excel文件和数据库。

csv数据

1.文本文件读取

  • CSV文件是以纯文本形式存储表格数据(数字和文本)。
  • CSV文件由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符
  • CSV文件是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

pandas提供了read_csv函数来读取csv文件。

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

 示例代码:

# 代码2-1
# 使用read_csv读取销售流水记录表
import pandas as pd
data1 = pd.read_csv('../data/销售流水记录1.csv', encoding='gb18030')
print('使用read_csv读取的销售流水记录表的长度为:', len(data1))



# 代码2-2
# 使用read_csv读取销售流水记录表, header=None
data2 = pd.read_csv('../data/销售流水记录2.csv', header=None, encoding='gb18030')
print('使用read_csv读取的销售流水记录表的长度为:', len(data2))
print('列名为None时订单信息表为:')
data2.iloc[0:5,0:4]

# 使用utf-8解析销售流水记录表
data3 = pd.read_csv('../data/销售流水记录2.csv', header=None, encoding='utf-8')

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)

 示例代码:

# 代码2-3
import os
print('销售流水记录表写入文本文件前目录内文件列表为:\n', os.listdir('../tmp'))
data1.to_csv('../tmp/SaleInfo.csv', sep=';', index=False)  # 将data1以CSV格式存储
print('销售流水记录表表写入文本文件后目录内文件列表为:\n', os.listdir('../tmp'))

Excel文件数据

1. Excel文件读取

pandas提供了read_excel函数来读取“xls”“xlsx”两种Excel文件。

pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)

示例代码:

# 代码2-4
data3 = pd.read_excel('../data/折扣信息表.xlsx')  # 读取折扣信息表的数据
print('data3信息长度为:', len(data3))


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_excel函数和to_csv函数的常用参数基本一致,区别之处在于指定存储文件的文件路径参数名称为excel_writer,并且没有sep参数。

此外,还增加了一个sheetnames参数,用于指定存储的Excel Sheet的名称,默认为sheet1。

# 代码2-5
print('data3写入Excel文件前目录内文件列表为:\n', os.listdir('../tmp'))
data3.to_excel('../tmp/data_save.xlsx')
print('data3写入Excel文件后目录内文件列表为:\n', os.listdir('../tmp'))

数据库数据

1. 数据库数据读取

pandas提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接。SQLAlchemy配合相应数据库的Python连接工具,使用create_engine函数,建立一个数据库连接。

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

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

read_sql_table只能够读取数据库的某一个表格,不能实现查询的操作。

pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, columns=None)

read_sql_query则只能实现查询操作,不能直接读取数据库中的某个表。

pandas.read_sql_query(sql, con, index_col=None, coerce_float=True)

read_sql是两者的综合,既能够读取数据库中的某一个表,也能够实现查询操作。

pandas.read_sql(sql, con, index_col=None, coerce_float=True, columns=None).

示例代码:

# 代码2-6
import pandas as pd
import sqlalchemy
# 创建一个mysql连接器,用户名为root,密码为123456
# 地址为127.0.0.1,数据库名称为test
sqlalchemy_db = sqlalchemy.create_engine(
            'mysql+pymysql://root:[email protected]:3306/test')
print(sqlalchemy_db)



# 代码2-7
import pandas as pd
# 使用read_sql_query函数查看test中的数据表数目
formlist = pd.read_sql_query('show tables', con=sqlalchemy_db)
print('testdb数据库数据表清单为:', '\n', formlist)

# 使用read_sql_table函数读取销售流水记录表sale2
detail1 = pd.read_sql_table('sale2', con=sqlalchemy_db)
print('使用read_sql_table读取销售流水记录表的长度为:', len(detail1))

# 使用read_sql函数读取销售流水记录表
detail2 = pd.read_sql('select * from sale2', con=sqlalchemy_db)
print('使用read_sql函数 + sql语句读取销售流水记录表的长度为:', len(detail2))
detail3 = pd.read_sql('sale2', con=sqlalchemy_db)
print('使用read_sql函数+表格名称读取的销售流水记录表的长度为:', len(detail3))

2. 数据库存储

将DataFrame数据写入数据库中,同样也要依赖SQLAlchemy的数据库连接。数据库数据读取有3个函数,但数据存储则只有一个to_sql()方法。

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, dtype=None)

 

示例代码:

# 代码2-8
# 使用to_sql方法存储orderData
detail1.to_sql('sale_copy', con=sqlalchemy_db, index=False, if_exists='replace')
# 使用read_sql读取test表格
formlist1 = pd.read_sql_query('show tables', con=sqlalchemy_db)
print('新增一个表格后test数据库数据表清单为:', '\n', formlist1)

猜你喜欢

转载自blog.csdn.net/agelee/article/details/131071705