博客
关于我
python处理一亿条数据_Python数据分析实战(一)
阅读量:796 次
发布时间:2023-03-07

本文共 2811 字,大约阅读时间需要 9 分钟。

Python 数据分析实战:数据清洗与存储

通过前面五篇文章的学习,Python 的基础语法已经掌握得差不多了。为了让知识更加扎实,我们来做一个简单的实战项目。这个项目将帮助我们巩固对数据处理流程的理解,同时也能为后续学习打下坚实的基础。


项目目标

  • 读取数据:从文件 data_project1.csv 中读取数据。
  • 数据清洗
    • 清除字段缺失的数据。
    • commentprice 字段清洗成数字。
    • commentlist 拆分成三个字段,并清洗成数字。
  • 解析数据:将数据存储为列表嵌套字典的格式。
  • 保存结果:将处理后的数据存储为 .pkl 文件。

  • 读取数据

    import os
    os.chdir('E:\\pythonExe\\project1\\')
    with open('data_project1.csv', 'r', encoding='utf8') as f:
    data_p1 = f.readlines()[1:]
    for line in data_p1:
    print(line.split(','))

    数据清洗函数

    1. 字符串数据清洗成数字

    def comm_clean(s):
    if '条' not in s:
    return '数据缺失'
    else:
    return int(s.split(' ')[0])

    2. 字符串拆分

    def commentlist_clean(s):
    lst = s.split('                                            ', 3)
    if len(lst) == 3:
    quality = float(lst[0][2:])
    env = float(lst[1][-3:])
    serv = float(lst[2][-4:])
    return [quality, env, serv]
    else:
    return ['数据缺失', '数据缺失', '数据缺失']

    数据处理

    data_list = []
    count = 0
    for line in data_p1:
    data = line.split(',')
    if len(data) < 7:
    continue
    classify = data[0]
    name = data[1]
    comment = comm_clean(data[2])
    star = data[3]
    price = price_clean(data[4])
    address = data[5]
    lst = commentlist_clean(data[-1])
    if '数据缺失' not in lst:
    count += 1
    data_dict = {
    'classify': classify,
    'name': name,
    'comment': comment,
    'star': star,
    'price': price,
    'address': address,
    'quality': lst[0],
    'env': lst[1],
    'serv': lst[2]
    }
    data_list.append(data_dict)
    print(f'成功加载{count}条数据')
    print(data_list)

    保存结果

    import pickle
    with open('E:/pythonExe/project1/data_project1.pkl', 'wb') as pic:
    pickle.dump(data_list, pic)
    print("搞定")

    Python 算法函数创建

    1. 排列组合

    有数字 5、6、7、8、9(共5个数字),能组成多少个互不相同且无重复数字的两位数?以下是这些两位数:

    56, 57, 58, 59, 65, 67, 68, 69, 75, 76, 78, 79, 85, 86, 87, 89, 95, 96, 97, 98

    2. 排序

    def sort_num(x, y, z):
    x = int(input("请输入第一个数字:"))
    y = int(input("请输入第二个数字:"))
    z = int(input("请输入第三个数字:"))
    if x <= y <= z:
    print(x, y, z)
    else:
    print(z, x, y)

    3. 统计字符

    def count_chars(s):
    word = ''
    while True:
    char = input("请输入字符(输入'exit'退出):")
    if char == 'exit':
    break
    word += char
    if char != '\n':
    if char.isalpha():
    alpha_count += 1
    elif char == ' ':
    space_count += 1
    elif char.isdigit():
    digit_count += 1
    else:
    other_count += 1
    print(f"字母:{alpha_count}, 空格:{space_count}, 数字:{digit_count}, 其他:{other_count}")

    4. 猴子吃桃问题

    通过逆向推理可得:

    • 第10天早上只剩1个桃子,说明第9天早上剩2个桃子,吃掉1个后剩1个。
    • 第8天早上剩3个桃子,吃掉1个后剩2个。
    • 以此类推,第1天早上摘了10个桃子。

    Python 基础回顾

    转载地址:http://bxofk.baihongyu.com/

    你可能感兴趣的文章
    Python 接口自动化测试中的高阶函数
    查看>>
    python 控制 cmd 命令行颜色
    查看>>
    Python 操作 Azure Blob Storage
    查看>>
    Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
    查看>>
    Python 操作 JMeter 探索:pymeter 实操指南
    查看>>
    Python 操作 Redis
    查看>>
    Python 操作Mysql(PyMysql)
    查看>>
    Python 操作Redis
    查看>>
    Python 操作sqlite数据库及保存查询numpy类型数据(一)
    查看>>
    Python 操作sqlite数据库及保存查询numpy类型数据(二)
    查看>>
    Python 操作数据库
    查看>>
    Python 数据分析与可视化实战
    查看>>
    python 数据可视化 -- matplotlib02
    查看>>
    python 数据可视化利器
    查看>>
    Python 数据可视化详解
    查看>>
    python 数据库查询返回list或tuple
    查看>>
    Python 数据库连接池管理的基本知识 (附Demo)
    查看>>
    Python学习记录-2016-12-17
    查看>>
    Python 数据库骚操作 -- MySQL
    查看>>
    Python 数据操作详解
    查看>>