Python读写不同数据源数据案例
Python读写不同数据源的数据
在数据处理和分析中,常常需要从不同的数据源读取数据以及将数据写入不同的文件或数据库。本文将通过多个案例展示如何使用Python的pandas
库以及相关工具来读写不同数据源的数据。
代码3-1:使用read_table
和read_csv
函数读取CSV文件
# 代码3-1
import pandas as pd
# 使用read_table函数读取音乐行业收入信息表
musicdata = pd.read_table('../data/musicdata.csv', sep=',', encoding='gbk')
print('使用read_table函数读取音乐行业收入信息表的长度为:', len(musicdata))
# 使用read_csv函数读取音乐行业收入信息表
musicdata1 = pd.read_csv('../data/musicdata.csv', encoding='gbk')
print('使用read_csv函数读取音乐行业收入信息表的长度为:', len(musicdata1))
代码解析:
pd.read_table
:该函数用于读取表格数据,这里指定分隔符为逗号(sep=','
),编码为gbk
,读取../data/musicdata.csv
文件。pd.read_csv
:专门用于读取CSV文件,指定编码为gbk
读取相同文件。最后分别打印读取后数据的长度。
代码3-2:不同参数读取CSV文件
# 代码3-2
# 使用read_table函数读取音乐行业收入表,sep=';'
musicdata2 = pd.read_table('../data/musicdata.csv', sep = ';', encoding='gbk')
print('当分隔符为;时,音乐行业收入信息表为:\n', musicdata2)
# 使用read_csv函数读取音乐行业收入信息表,header=None
musicdata3 = pd.read_csv('../data/musicdata.csv', sep=',', header=None, encoding='gbk')
print('当header为None时,音乐行业收入数据信息表为:\n', musicdata3)
# 使用UTF-16编码读取音乐行业收入信息表
musicdata4 = pd.read_csv('../data/musicdata.csv', sep=',', encoding='utf-16')
print('encoding为"utf-16"时音乐行业收入数据信息表为:\n', musicdata4)
代码解析:
- 第一个
read_table
读取时指定分隔符为分号(sep=';'
),查看不同分隔符下的数据读取情况。 read_csv
中设置header=None
,表示读取时不将第一行作为列名。- 最后一个
read_csv
指定编码为utf-16
,展示不同编码下的数据读取。
代码3-3:将数据写入CSV文件
# 代码3-3
import os
print('音乐行业收入信息表写入文本文件前目录内文件列表为:\n', os.listdir('../tmp'))
# 将musicdata以csv格式存储
musicdata.to_csv('../tmp/musicdataInfo.csv', sep=';', index=False)
print('音乐行业收入信息表写入文本文件后目录内文件列表为:\n', os.listdir('../tmp'))
代码解析:
- 首先使用
os.listdir
查看../tmp
目录下的文件列表。 - 然后使用
to_csv
方法将musicdata
数据以CSV格式存储到../tmp/musicdataInfo.csv
文件中,指定分隔符为分号,并且不保存索引(index=False
)。 - 最后再次使用
os.listdir
查看写入文件后的目录文件列表。
代码3-4:读取Excel文件
# 代码3-4
# 读取musicdata.xlsx文件
musicdata = pd.read_excel('../data/musicdata.xlsx')
print('音乐行业收入信息表长度为:', len(musicdata))
代码解析:
- 使用
pd.read_excel
函数读取../data/musicdata.xlsx
文件,并打印读取后数据的长度。
代码3-5:将数据写入Excel文件
# 代码3-5
print('音乐行业收入信息表写入Excel文件前,目录内文件列表为:\n', os.listdir('../tmp'))
musicdata.to_excel('../tmp/musicdata.xlsx')
print('音乐行业收入信息表写入Excel文件后,目录内文件列表为:\n', os.listdir('../tmp'))
代码解析:
- 同样先使用
os.listdir
查看../tmp
目录下的文件列表。 - 然后使用
to_excel
方法将musicdata
数据写入到../tmp/musicdata.xlsx
文件中。 - 最后再次使用
os.listdir
查看写入文件后的目录文件列表。
代码3-6:创建MySQL连接器
# 代码3-6
from sqlalchemy import create_engine
# 创建一个MySQL连接器,用户名为root,密码为1234
# 地址为127.0.0.1,数据库名称为testdb,编码为UTF-8
engine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/testdb?charset=utf8')
print(engine)
代码解析:
- 使用
sqlalchemy
库的create_engine
函数创建一个MySQL数据库连接器,指定用户名、密码、数据库地址、数据库名称以及编码。
代码3-7:从MySQL数据库读取数据
# 代码3-7
# 使用read_sql_query函数查看testdb中的数据表数目
musicadatalist = pd.read_sql_query('show tables', con=engine)
print('testdb数据库数据表清单为:\n', musicadatalist)
# 使用read_sql_table函数读取音乐行业收入信息表
musicdata = pd.read_sql_table('musicdata', con=engine)
print('使用read_sql_table函数读取音乐行业收入信息表的长度为:\n', len(musicdata))
# 使用read_sql函数读取音乐行业收入信息表
musicdata = pd.read_sql('musicdata', con=engine)
print('使用read_sql函数读取音乐行业收入信息表的长度为:\n', len(musicdata))
代码解析:
pd.read_sql_query
:执行SQL查询语句show tables
,查看数据库中的数据表清单。pd.read_sql_table
:直接读取指定名称的表(musicdata
)。pd.read_sql
:也可以用于读取指定名称的表,这里同样读取musicdata
表,并打印读取后数据的长度。
代码3-8:将数据存储到MySQL数据库
# 代码3-8
# 使用to_sql()方法存储musicData
musicdata.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)
代码解析:
- 使用
to_sql
方法将musicdata
数据存储到MySQL数据库的test1
表中,不保存索引,并且如果表已存在则替换(if_exists='replace'
)。 - 最后使用
read_sql_query
查看新增表格后的数据库数据表清单。
总结
通过以上案例,你可以学习到如何使用Python的pandas
库以及sqlalchemy
库来读写不同数据源的数据,包括CSV文件、Excel文件和MySQL数据库。掌握这些技巧后,你将能够灵活地处理各种数据读写任务,为后续的数据处理和分析工作打下坚实的基础。