python 学习笔记2--数据读取

本文介绍了如何使用Python处理CSV、JSON、XML和Excel等常见数据文件格式。包括文件的读取、解析及数据转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dir(…)可以用来查看该变量支持的方法
#csv
##1.打开csv文件
import csv
csvfile = open('data-txt','r')

##2.查看csv文件内容(不打印)
列表:csv.reader(csvfile)
字典:csv.DictReader(csvfile)

#JSON
##1.打开并查看json文件
json_data = open('../data/chp3/data-text.json').read()

*ps: 与csv不同,此处需添加 .read() *
否则会报错: TypeError: the JSON object must be str, not 'TextIOWrapper'
原因:json库和csv处理数据的方式不同 json.loads()只能接受str,而csv.reader()只能接受文件对象

##2.载入json文件
json.loads(json_data)

#xml
##1.导入xml数据

from xml.etree import ElementTree as et
tree = et.parse('../data/chp3/data-text.xml')
root = tree.getroot()#调用树的根元素(XML节点)

data = root.find('Data')

all_data = []#list,用来存放record字典的内容

for oberservation in data:
    record = {}#dictioary,用来保存每一个键值对
    for item in oberservation:
        lookup_str = list(item .attrib.keys())#将键值对这个数组传给lookup_str
        lookup_key = lookup_str[0]#将该键值对的第一个元素作为新字典record的键rec_key
        if lookup_key == 'Numeric':
            rec_key = 'Numeric'#若为数字,则将键名改为Numeric(不处理的话键名是数字)
            rec_value = item.attrib['Numeric']#将数字赋为它的键值
        else:
            rec_key = item.attrib[lookup_key]
            rec_value = item.attrib['Code']
        record[rec_key] = rec_value#将每一个新的键值对添加到record字典中
    all_data.append(record)#将字典添加到列表中
print(all_data)

如下图,所有显示的内容是一个all_data[]列表
xml数据显示

PS:item.text只有在标签内有内容才有用,否则返回的数值均为None
##2.find() 和 findall()
当我使用find()时,print的是所有元素,而使用findall()却只print了一个元素,这是为什么呢?

data = root.find('Data')
# data = root.findall('Data')
print(list(data))

这是find()的运行结果
find()

这是findall()的运行结果
findall()

这两者不是反了吗这样?求指教

#Excel
下面的代码是一步步进行的,只是因为不想新建多个文件所以直接将每一步的上一步注释掉了
PS: pprint用于美化输出的内容
读取excel文件需要 import xlrd,若是写,则要 import xlwt

import xlrd
import pprint
book = xlrd.open_workbook('../data/chp4/SOWC 2014 Stat Tables_Table 9.xlsx')
# for sheet in book.sheets():
#     print(sheet.name)

sheet = book.sheet_by_name('Table 9 ')
# print (dir(sheet))
# print(sheet.nrows)#303行
# 使用range函数将303转换成一个列表,使用for遍历(一行为列表的一个元素)

# # 输出单元格内容
# # 法1:使用for循环嵌套
# for i in range(sheet.nrows):
#     # print(i)
#     # print(sheet.row_values(i))#输出每一行的值,空格内无数据则输出为`''`
#     row = sheet.row_values(i)
#     for cell in row:
#         print(cell)

# 输出单元格内容
# 法2:使用计数器
# count = 0
# for i in range(sheet.nrows):
#    if count < 20:
#        if i > 14:
#            row = sheet.row_values(i)
#            print(i, row)
#        count += 1

# 创建字典,国家名为键
# count = 0
# data = {}
# for i in range(sheet.nrows):
#    if count < 20:
#        if i > 14:
#            row = sheet.row_values(i)
#            country = row[1]
#            data[country] = {}
#            # print(i, row)
#        count += 1
# print(data)

# 删除与计数器相关的代码
data = {}
# py3将xrange和range 合并为range
for i in range(14,sheet.nrows):
    row = sheet.row_values(i)
    country = row[1]

    data[country] = {
        'child_labor':{
            'total':[row[4],row[5]],
            'male':[row[6],row[7]],
            'female':[row[8],row[9]],
        },
        'child_marriage':{
            'marriaged_by_15':[row[10],row[11]],
            'married_by_18':[row[12],row[13]],
        }
    }
    # 可以加判断语句以退出for循环
    # if country == 'Afghanistan':
    #     print('break')
    #     break
    # else:
    #     print(country)
pprint.pprint(data['Albania'])
内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值