【Python】数据分析.pandas.读/写不同数据源的数据

网友投稿 332 2022-08-25

【Python】数据分析.pandas.读/写不同数据源的数据

文章目录

​​数据分析.pandas.读/写不同数据源的数据​​

​​一、读/写数据库数据​​

​​1.1 数据库数据的读取​​​​1.2 数据库数据的写入​​

​​二、读/写文本文件​​

​​2.1 文本文件数据的读取(.csv)​​​​2.2 文本文件数据的写入(.csv)​​

​​三、读/写Excel文件​​

​​3.1 Excel文件数据的读取​​​​3.2 Excel文件数据的写入​​

数据分析.pandas.读/写不同数据源的数据

读取数据是进行数据预处理、建模和分析的前提。不同的数据源需要不同的函数来读取。常见的数据源有3种,分别是数据库数据、文本文件(包括一般文本文件和CSV文件)和Excel文件。

一、读/写数据库数据

1.1 数据库数据的读取

read_sql_query() — 读取自定义数据(通过SQL语句)

import pandas as pdpd.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None,chunksize=None)

pd.read_sql_table() — 读取整张表以DataFrame格式(通过表名)

import pandas as pdpd.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)

pd.read_sql() — 读数据库(通过SQL语句或者表名)

import pandas as pdpd.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

​​返回顶部​​

1.2 数据库数据的写入

Dataframe.to_sql() — 将存储在DataFrame中的记录写入SQL数据库

to_sql(name, con, flavor=None, schema=None, if_exists=’fail’, index=True, index_label=None, chunksize=None, dtype=None)

​​详解​​

​​返回顶部​​

二、读/写文本文件

CSV文件根据其定义也是一种文本文件。 在数据读取过程中可以使用文本文件的读取函数对CSV文件进行读取。 同时,如果文本文件是字符分割文件,也可以使用读取CSV文件的函数读取。

2.1 文本文件数据的读取(.csv)

read_table() — 读取以‘/t’分割的文件到DataFrame

read_csv() — 读取以‘,’分割的文件到DataFrame

使用read_table、read_csv读取订单信息表

## 使用read_table读取订单信息表order = pd.read_table('../data/meal_order_info.csv',sep = ',',encoding = 'gbk')print('使用read_table读取的订单信息表的长度为:',len(order))## 使用read_csv读取订单信息表order1 = pd.read_csv('../data/meal_order_info.csv',encoding = 'gbk')print('使用read_csv读取的订单信息表的长度为:',len(order1))使用read_table读取的订单信息表的长度为: 945使用read_csv读取的订单信息表的长度为: 945

sep参数是指定文本的分隔符的,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片。 header参数是用来指定列名的,如果是none。则会添加默认的列名。 encoding代表文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果指定编码错误,IPython解释器会报解析错误。

更改参数​​sep = ';'​​读取菜品订单信息表

## 使用read_table读取菜品订单信息表,sep = ';'order2 = pd.read_table('../data/meal_order_info.csv',sep = ';',encoding = 'gbk')print('分隔符为;时订单信息表为:\n',order2)分隔符为;时订单信息表为: info_id,"emp_id","number_consumers","mode","dining_table_id","dining_table_name","expenditure","dishes_count","accounts_payable","use_start_time","check_closed","lock_time","cashier_id","pc_id","order_number","org_id","print_doc_bill_num","lock_table_info","order_status","phone","name"0 417,1442,4,NA,1501,1022,165,5,165,"2016/8/1 11... 1 301,1095,3,NA,1430,1031,321,6,321,"2016/8/1 11... 2 413,1147,6,NA,1488,1009,854,15,854,"2016/8/1 1... 3 415,1166,4,NA,1502,1023,466,10,466,"2016/8/1 1... 4 392,1094,10,NA,1499,1020,704,24,704,"2016/8/1 ... .. ... 940 641,1095,8,NA,1492,1013,679,12,679,"2016/8/31 ... 941 672,1089,6,NA,1489,1010,800,24,800,"2016/8/31 ... 942 692,1155,8,NA,1492,1013,735,10,735,"2016/8/31 ... 943 647,1094,4,NA,1485,1006,262,9,262,"2016/8/31 2... 944 570,1113,8,NA,1517,1038,589,13,589,"2016/8/31 ... [945 rows x 1 columns]

更改参数​​header=None​​读取菜品订单信息表

## 使用read_csv读取菜品订单信息表,header=Noneorder3 = pd.read_csv('../data/meal_order_info.csv',sep = ',',header = None,encoding = 'gbk')print('订单信息表为:','\n',order3)订单信息表为: 0 1 2 ... 18 19 200 info_id emp_id number_consumers ... order_status phone name1 417 1442 4 ... 1 18688880641 苗宇怡2 301 1095 3 ... 1 18688880174 赵颖3 413 1147 6 ... 1 18688880276 徐毅凡4 415 1166 4 ... 1 18688880231 张大鹏.. ... ... ... ... ... ... ...941 641 1095 8 ... 1 18688880307 李靖942 672 1089 6 ... 1 18688880305 莫言943 692 1155 8 ... 1 18688880327 习一冰944 647 1094 4 ... 1 18688880207 章春华945 570 1113 8 ... 1 18688880313 唐雅嘉[946 rows x 21 columns]

更改参数​​encoding='utf-8'​​读取菜品订单信息表

## 使用gbk解析菜品订单信息表order4 = pd.read_csv('../data/meal_order_info.csv',sep = ',',encoding='utf-8')UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 401:

​​返回顶部​​

2.2 文本文件数据的写入(.csv)

DataFrame.to_csv() — 将数据以CSV文件格式存储

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True, escapechar=None, decimal='.')

参数:path_or_buf :文件路径,如果没有指定则将会直接返回字符串的 jsonsep :输出文件的字段分隔符,默认为 “,”na_rep :用于替换空数据的字符串,默认为“”float_format :设置浮点数的格式(几位小数点)columns :要写的列header :是否保存列名,默认为 True ,保存index :是否保存索引,默认为 True ,保存index_label :索引的列标签名

import numpy as npimport pandas as pdimport os# 使用read_table 读取菜品订单信息表order = pd.read_table('data/meal_order_info.csv',sep=',',encoding='gbk')print('订单信息表写入文本文件前目录内文件列表为:\n',os.listdir('tmp'))## 将order以csv格式存储order.to_csv('tmp/orderInfo.csv',sep = ';',index = False) print('订单信息表写入文本文件后目录内文件列表为:\n',os.listdir('tmp'))

​​返回顶部​​

三、读/写Excel文件

3.1 Excel文件数据的读取

read_excel() — 实现读取Excel文件功能

pandas.read_excel(io,sheet_name=0,header=0,skiprows=None,skip_footer=0,index_col=None,names=None, usecols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None,convert_float=True, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)

import pandas as pduser = pd.read_excel('data/users.xlsx')## 读取user.xlsx文件print('客户信息表长度为:',len(user))

​​返回顶部​​

3.2 Excel文件数据的写入

to_excel() — 实现向Excel文件中写入数据的功能

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

import osimport pandas as pduser = pd.read_excel('data/users.xlsx')## 读取user.xlsx文件print('客户信息表写入excel文件前目录内文件列表为:\n',os.listdir('tmp'))user.to_excel('tmp/userInfo.xlsx')print('客户信息表写入excel文件后目录内文件列表为:\n',os.listdir('tmp'))

总结以上的读取文件方法 read_*:

## 导入SQLAlchemy库的creat_engine函数from sqlalchemy import create_engineimport pandas as pd## 创建一个mysql连接器,用户名为root,密码为1234## 地址为127.0.0.1,数据库名称为testdbengine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/testdb?charset=utf8')## 使用read_sql_table读取订单详情表格order1 = pd.read_sql_table('meal_order_detail1',con = engine)print('订单详情表1的长度为:',len(order1))order2 = pd.read_sql_table('meal_order_detail2',con = engine)print('订单详情表2的长度为:',len(order2))order3 = pd.read_sql_table('meal_order_detail3',con = engine)print('订单详情表3的长度为:',len(order3))## 使用read_table读取订单信息表orderInfo = pd.read_table('../data/meal_order_info.csv', sep = ',',encoding = 'gbk')print('订单信息表的长度为:',len(orderInfo))## 读取user.xlsx文件userInfo = pd.read_excel('../data/users.xlsx', sheetname = 'users1')print('客户信息表的长度为:',len(userInfo))

​​返回顶部​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【数据分析与预处理】 ---- 数据汇总_分组聚合
下一篇:【Python数据分析与处理 实训02】 ---2012欧洲杯信息分析(数据过滤与排序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~