Python数据分析基础之读取CSV,JSON, XML文件

Python数据分析-------CSV,JSON, XML

一 CSV数据

如何导入CSV数据

import csv

# 打开文件
csv_file = open(r'F:\pycharm\py_workspace\3 Python数据分析实例数据\data\who\data-text.csv')

# 让csv模块将打开的文件当csv来读取
# csv.reader()返回的是数据的列表 包含文件中的每一行数据
reader = csv.reader(csv_file)

for row in reader:
    print(row)

将输出列表改为输出字典

reader_dict = csv.DictReader(csv_file)
# 改版后返回OrderedDict类型

二 JSON数据

JSON数据格式

[
  {
    "Indicator":"Life expectancy at birth (years)",
    "PUBLISH STATES":"Published",
    "Year":1990,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":77,
    "Numeric":77.00000,
    "Low":"",
    "High":"",
    "Comments":""
  }
]

如何导入JSON数据

import json

# 打开并读取
json_data = open(r"F:\pycharm\py_workspace\3 Python数据分析实例数据\data\chp3\data-text.json").read()
# 将JSON数据载入python 输出保存在data里
data = json.loads(json_data)

# 输出的是字典
for item in data:
    print(item)

小结

CSV例子中 open函数返回一个文件对象 然后csv.rader()读取
JSON例子中 open函数打开文件然后.read读取 得到的是一个str字符串

csv.reader接收文件对象
json.loads接收字符串

三 XML数据

XML文件的核心结构:
在这里插入图片描述

import pprint
from xml.etree import ElementTree as ET

# ET类的parse方法 对传入的文件中的数据进行解析
# tree指整个XML队形
tree = ET.parse(r"F:\pycharm\py_workspace\3 Python数据分析实例数据\data\chp3\data-text.xml")
# 获取树的根元素
root = tree.getroot()
# print(root)
# <Element 'GHO' at 0x0000029B2ECA2AE8>

# 返回子元素
# pprint.pprint(list(root))
'''
[<Element 'QueryParameter' at 0x000001EC85C42C78>,
 <Element 'QueryParameter' at 0x000001EC85C42CC8>,
 <Element 'QueryParameter' at 0x000001EC85C42D18>,
 <Element 'QueryParameter' at 0x000001EC85C42DB8>,
 <Element 'QueryParameter' at 0x000001EC85C42E08>,
 <Element 'QueryParameter' at 0x000001EC85C42E58>,
 <Element 'Copyright' at 0x000001EC85C42EA8>,
 <Element 'Disclaimer' at 0x000001EC85C42F98>,
 <Element 'Metadata' at 0x000001EC85C44098>,
 <Element 'Data' at 0x000001EC85F21C78>]
'''

# 获取Data元素 用find方法
# find和findall find返回的是匹配的第一个元素/findall返回的是匹配的所有元素
data = root.find('Data')
# print(list(data))
# 打印出来的是一个由Observation元素组成的列表

# 遍历Observation元素和其每一个子元素
# for observation in data:
#     for item in observation:
#         print(item)

# 创建数据结构
# 先创建保存数据空列表
all_data = []
for observation in data:
    record = {}
    for item in observation:
        # 用Category的值作为新字典的键 item.attrib.keys()输出的是每个属性字典的键
        lookup_key = item.attrib.keys()[0]
        if lookup_key == 'Numeric':
            rec_key = 'NUMERIC'
            rec_value = item.attrib['Numeric']
        else:
            rec_key = item.attrib[lookup_key]
            rec_value = item.attrib['Code']

        record[rec_key] = rec_value

    all_data.append(record)
print(all_data)

XML提取数据更复杂 但是可以创建空列表和字典

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值