2个数据处理的案例

118 阅读2分钟
例1:多数据文件的合并

如下图所示,本地目录内包含需要读取的多个数据文件,它们均为csv格式或txt格式,且数据结构相同。该如何基于Python的for循环语句实现数据的读取与合并呢?

640?wx_fmt=png

# 导入第三方模块
import pandas as pd  # 用于读取数据
import os   # 用于返回目录内的文件名称
 
# 指定待读取数据所在的目录
path = r'D:\datas'
# 构造空列表datas,用于存储所有文件的数据
datas = []
for filename in os.listdir(path):
    # 判断文件类型是否为txt格式
    if filename.find('txt') != -1:
        # 读取txt格式的数据
        data = pd.read_csv(path + '\' + filename, sep = '\t')
    else:
        # 读取csv格式的数据
        data = pd.read_csv(path + '\' + filename)
    # 将读取的每一个数据集存储到datas列表中
    datas.append(data)
 
# 将所有数据文件做合并
final_data = pd.concat(datas)
final_data

640?wx_fmt=png

案例2:数据单位的统一处理

如下图所示,数据集中关于APP的下载量和软件大小涉及到不同的数据单位,如APP的文件大小有KB单位也有MB单位。很显然,单位不一致的数据肯定是不能直接用来分析和建模的。所以,该如何借助于for循环的手段将数据做一致性的清洗呢?

640?wx_fmt=png

# 读取数据
apps = pd.read_excel('apps.xlsx')
 
# 处理安装量字段install,将数据统一为“万”的单位
install_new = []
for i in apps['install']:
    # 判断安装量是否已“亿”为单位
    if i.find('亿') != -1:
        install_new.append(str(float(i[:-1])*10000) + '万')
        # 判断安装量是否已“万”为单位
    elif i.find('万') != -1:
        install_new.append(i)
    else:
        install_new.append(str(int(i)/10000) + '万')
 
# 将install_new转换为序列对象,并替换数据集apps内原始字段install的值
apps['install'] = pd.Series(install_new)
 
# 处理软件大小size,将数据统一为“MB”的单位
size_new = []
for i in apps['size']:
# 判断软件大小是否已“KB”为单位
    if i.find('KB') != -1:
        size_new.append(str(round(float(i[:-2])/1024,2)) + 'MB')
    else:
        size_new.append(i)
 
# 将size_new转换为序列对象,并替换数据集apps内原始字段size的值
apps['size'] = pd.Series(size_new)        
 
# 查看数据转换后的前10行
apps.head(10)

640?wx_fmt=png

更多内容可以学习《测试人的 Python 工具书》书籍《性能测试 JMeter 实战》书籍