第一章 Python数据格式及使用介绍 第二章 Pandas-各类型文件数据读取 第三章 Pandas-数据的简单加工 第四章 Pandas-聚合与透视 第五章 Pandas-数据合并的多种方式 第六章 Pandas-数据的保存
提示:本系列重在介绍Pandas使用方法,未提供Anaconda、Pycharm等Python编辑器的安装方法。
Pandas在数据清洗中的重要性不言而喻。本文将介绍以Pandas为核心的数据读取(不限于Pandas),Pandas其他功能可见本人《Pandas精通之路》系列其他文章。
1)Excel数据读取
import pandas as pd
data = pd.read_excel(path)
data.tail(10)
data.shape
data = pd.read_excel(path, sheet_name=None)
sheet_names = data.keys()
sheet_data = data.values()
(可跳过)补充用例1:不改变表1数据格式,将表2和表3数据汇总进表1
import pandas as pd
import openpyxl as op
path = ['表1', '表2' ,'表3']
step = 4
book = op.load_workbook(path[0])
writer = pd.ExcelWriter(path[0], engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
sheet = book.worksheets[0]
row_mc_str = sheet.max_row
for fn in file[1:]:
data = pd.read_excel(fn, index_col=0)
data.to_excel(writer, sheet_name=sheet.title, startrow=row)
row += step
writer.save()
writer.close()
2)csv数据读取
data = pd.read_csv(path, engine='python')
data = pd.read_csv(path, engine='python', encoding='utf-8')
dateparse = lambda dates: pandas.datetime.strptime(dates, '%Y%m%d')
data = pandas.read_csv(
'./data.csv',
parse_dates=['时间'],
date_parser=dateparse,
index_col='时间'
)
1)MySQL数据读取
import pymysql
import pandas as pd
password = input('请输入密码:')
conn = pymysql.connect(host='localhost',user='root',passwd=password ,db='test',port=3306,charset='utf8')
sql_cmd = """
select * from table where city='迪拜'
"""
data = pd.read_sql(sql_cmd,conn)
2)Postgres数据读取
import psycopg2
conn = psycopg2.connect(
database="postgres",
user="postgres",
password="pd",
host="localhost",
port="5432")
conn.set_client_encoding("utf-8")
cur = conn.cursor()
cur.execute("""%s""" % sql)
result = cur.fetchall()
conn.commit()
cur.close()
conn.close()
result = pd.DataFrame(result)
3)其他类型数据库
大同小异,核心都是找到对应的数据读取包,不再一一举例
1)txt、sql、del等文件读取
1.规整的表格数据,可通过 pd.read_csv
方法读取为 DataFrame
格式数据;其中 header=None
是无列名称,否则会将第一行作为列名称, names
是指定的列名, sep
是分割符,默认为逗号,具体视实际数据分割方式而定。
import pandas as pd
data = pd.read_csv('数据.txt',
header=None,
names=['日期', '分类', '类型'],
sep=' '
)
print(data)
输出结果示例
日期 分类 类型
0 20220101 1 大
1 20220102 1 中
2 20220103 1 大
3 20220104 1 大
4 20220105 1 小
5 20220106 1 大
6 20220107 1 小
2.非表格数据(不限于txt)使用 with open()
方式读取, read()
结果为 str
, readlines()
结果为 list
with open("data.txt", encoding='utf-8') as f:
data = f.read()
print(type(data))
print(data)
输出结果
<class 'str'>
20220101,1,大
20220102,1,中
20220103,1,大
20220104,1,大
20220105,1,小
20220106,1,大
20220107,1,小
sql文件读取
with open("data.sql", encoding='utf-8') as f:
data = f.readlines()
print(type(data))
for d in data:
print(d)
输出结果
<class 'list'>
create table dark
(
....
)
distributed by ()
partition by range(dt)
(
START ('2010-01-01'::date) END ('2041-12-31'::date) EVERY ('1 mon'::interval)
)
;
3.del等其他类型文件方法基本相同,不一一列举
2)dat文件读取
1.表格类数据 pd.read_table()
方法读取;
2.非表格数据 with open()
同txt文件,不赘述。
import pandas as pd
data = pd.read_table('file_nm.dat', sep='\|@\|', header=None)
data.tail(10)
3)json数据读取
import pandas as pd
data = pd.read_json('data.json', orient='table')
print(data)
print(type(data))
原json格式数据
{
"schema": {
"fields": [{
"name": "index",
"type": "integer"
}, {
"name": "col 1",
"type": "string"
}, {
"name": "col 2",
"type": "string"
}],
"primaryKey": ["index"],
"pandas_version": "0.20.0"
},
"data": [{
"index": 0,
"col 1": "a",
"col 2": "b"
}, {
"index": 1,
"col 1": "c",
"col 2": "d"
}]
}
输出结果
col 1 col 2
0 a b
1 c d
<class 'pandas.core.frame.DataFrame'>
import pandas as pd
import json
with open('data.json', encoding='utf-8') as f:
data = f.read()
data = json.loads(data)
df = pd.json_normalize(data)
print(df)
输出结果
id name fitness.height fitness.weight
0 1.0 Cole Volk 130 60
1 NaN Mark Reg 130 60
2 2.0 Faye Raker 130 60
3.(比官网增加个难度的json)复杂json的展平操作
import pandas as pd
import json
with open('data.json', encoding='utf-8') as f:
data = f.read()
data = json.loads(data)
df = pd.json_normalize(
data,
record_path=['result', 'counties'],
meta=[['result', 'state'],
['result', "shortname"],
['result', 'info', 'governor']],
sep='_'
)
df.rename(columns={
'result_state': 'state',
'result_shortname': 'shortname',
'result_info_governor': 'info_governor'
}, inplace=True
)
输出结果
name population state shortname info_governor
0 Dade 12345 Florida FL Rick Scott
1 Broward 40000 Florida FL Rick Scott
2 Palm Beach 60000 Florida FL Rick Scott
3 Summit 1234 Ohio OH John Kasich
4 Cuyahoga 1337 Ohio OH John Kasich
本文介绍了pandas读取各类文件数据的方法,其中最为常用的是Excel、csv和DataBase数据的读取;另外也介绍了txt、dat、sql等类型数据的读取,方法大同小异;最后结束了json数据的读取,基本是结合官网数据变形而来,主要在于读取(官网只介绍了转换)。
*声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,如有雷同纯属巧合。
Original: https://blog.csdn.net/LMTX069/article/details/122448642
Author: 赫加青空
Title: 第二章Pandas数据读取(Pandas精通之路)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601118/
转载文章受原作者版权保护。转载请注明原作者出处!