现实的创作来源于生活的灵感!

项目引入

昨天突然发现有一个比较头疼的问题,有一份数据是某一个学校的寝室数据,有不同的维度的分类,总的数据大概有4000数据,需要进行分类,然后按照不同分类维度进行表格制作,最后生成8个文件夹,每个文件夹里面有24个表格,这个就是我们这一个程序的最终实现功能。如果我们用Excel筛选需要点很多次,而且需要几个人的配合工作,这样就比较的费力,那么作为数据分析的Python神器,可不可以解决这个问题了,答案是当然可以!

项目思路

1.首先对这个大量的数据进行导入,用CSV这个库,然后按照Python的对象进行写入和解析,最后存储在pycharm运行内存空间,方便我们下一步操作。

2.导入之后我们就需要分类了,这个时候需要我们写一个算法了,我把它叫做“字典迭代算法”当然是我自己命名的,这个里面涉及到很多的坑,最后我们需要把这个功能封装起来。

3.数据保存也就是,CSV文件的写入数据,最后利用Python的内置模块OS进行文件夹的分类创建,最后实现保存数据,这个时候我们还要解决CSV文件的中文乱码问题。

难点

1.解析数据之后如何分割数据,进行保存

2.写入文件的时候如何解决乱码问题

3.怎样去结构化我们的代码程序

代码介绍

大概的思路就是这样,下面我们来具体看看这个程序的功能实现的功能步骤

解析数据

# 1.解析CSV海量数据,用字典保存在内存空间

def csv_data():

global dormitory_data

import csv

dormitory_data = []

with open(r"寝室数据.csv", encoding='utf-8-sig') as file:#将你的CSV文件和该程序文件放在一个文件夹下面

f_csv = csv.reader(file)#读取文件里面的每一行数据,转换为列表赋值给新的变量

header = next(f_csv)#利用迭代的方法,直接取出表头行(标题行),更新f_csv的数据,去除了标题行

for row in f_csv:

data = {}

for index in range(7):

data[header[index]] = row[index]

dormitory_data.append(data)

这里我们对一份Excel的数据,修改它的后缀名,变成CSV文件的后缀名即可,然后我们就对这个数据进行导入和解析了。

这个解析过程和我们之前的一篇文章《用Python写一个成绩计算系统》的有异曲同工之妙。主要要理解对表头行的提取很数据迭代解析,最后存储在一个列表里面。注意这里一般都是需要声明全局变量的。

效果执行

分割数据

# 分割数据,按照数据的特点

def csv_sort():

global dicts

dicts=[];i = 0

dormitory_datas = dormitory_data.copy()#字典迭代删除迭代数据是一个坑,需要我们时刻更新数据库值

dormitory_datass= dormitory_data.copy()

for x in dormitory_datass:

b = []

for sort in dormitory_datass:

a_1 = sort["宿舍编号"]

b.append(a_1)

dicts.append(x)

dormitory_data.remove(x)

dormitory_datass=dormitory_data.copy()

if b[i][:3] != b[i+1][:3]:

break

这里不要小看这个几行代码,这个里面的算法是需要进行反复的测试,才实行的,里面有几个坑,真的是有点头疼,还好最后解决了。

1.首先我们要按照一个算法去分割数据,我们浏览数据之后发现,每一个组团的1-4栋寝室数据都是有相关联的,1楼到2楼的寝室编号我们按照前三位的数据节点,进行索引判断,这样去迭代每一个数据,然后进行比较,最后如果不同的话,我们就发现那么肯定是不同的楼层了,需要我们进行分割数据了。

2.但是我们发现我们跳出循环之后,也就是迭代完1楼的寝室数据之后,我们惊奇的字典的数据虽然是变化了,但是唯独也发生了变化,这个就是第一个坑,因为列表的删除有一个特点,它是利用迭代索引进行删除的,这个在我之前的计算机二级Python程序语言设计-疑难杂症知识点汇总,提到了这个解决办法。我最后利用字典的复制存储,不断的去更新和弥补这个数据字典,bug才解决,这个时候真的需要静下心来慢慢思索。

3.利用字典迭代算法,判断什么时候需要分割数据,最后封装这个函数功能。

保存数据

#保存数据,按照不同的分类

def keep_data():

import csv

import os

import codecs

for w in range(65,73):

W=chr(w)

path = '%s栋寝室'%W      # 创建总的文件夹

if not os.path.exists(path):

os.mkdir(path)

os.chdir(path)

else:

os.chdir(path)

a = []

dict = dormitory_data[0]

for headers in dict.keys():  # 把字典的键取出来,注意不要使用sorted不然会导致键的顺序改变

a.append(headers)

header = a  # 把列名给提取出来,用列表形式呈现

for k in range(1,5):

K=k

for p in range(1,7):

P=p

csv_sort()

with open('%s组%d栋%d楼.csv'%(W,K,P ),'a', newline='', encoding='utf-8-sig') as f:

writer = csv.DictWriter(f, fieldnames=header,)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。

writer.writeheader()  # 写入列名

writer.writerows(dicts)  # 写入数据

print("{}组{}栋寝室{}楼数据已经写入成功!!!! ! !".format(W,K,P))

这个功能同样有几个坑,首先我们需要对数据设计好迭代for循环保存,并且利用OS模块继续自动的创建文件夹,最后对其数据进行命名,方便我们查看还有就是我们的CSV文件里面的编码是utf-8模式,但是Excel里面的编码不同,这个就会造成我们的中文数据形式的乱码问题。

所以我们就去用了这个办法来解决了

encoding='utf-8-sig'

下面我们来看看整体操作的演示效果

代码升级版

1.我们还可以参考一些办法,对这个表格数据进行自动制作,添加头部文件信息,当然我这里就不做演示了,你们可以自己去寻找不同的解决方法。

2.我们还可以对数据表格进行网格线绘制,使其我们的表格更加美观,比如字体居中等

3.编写一个自动打印的程序,链接到我们的电脑打印机,一键化打印这些数据,极大地提高了我们的效率。

这些功能读者可以自己去实现,我这里就不做说明了,毕竟代码的涉及和项目不容易,哈哈哈哈!

自动化办公,一键化处理,本来就是Python的强项,我们可以利用它的功能来解决我们学习生活的难题,最后我想致敬那些每天为了数据整理,疯狂的点击Excel的工作人员,毕竟这个东西头大,难搞,枯燥,乏味

最后我想要说的是虽然设计项目程序比较的头疼,但是它可以移植,并且不断的升级,最后别人用1个小时,你只需要3秒钟运行查看即可!

程序源码

# -*- coding :  utf-8 -*-

# @Time      :  2020/9/15 13:26

# @author    :  王小王

# @Software  :  PyCharm

# @File      :  寝室数据分类.py-1.0版本

# @CSDN      :  https://blog.csdn.net/weixin_47723732

# 1.解析CSV海量数据,用字典保存在内存空间

def csv_data():

global dormitory_data

import csv

dormitory_data = []

with open(r"寝室数据.csv", encoding='utf-8-sig') as file:#将你的CSV文件和该程序文件放在一个文件夹下面

f_csv = csv.reader(file)#读取文件里面的每一行数据,转换为列表赋值给新的变量

header = next(f_csv)#利用迭代的方法,直接取出表头行(标题行),更新f_csv的数据,去除了标题行

for row in f_csv:

data = {}

for index in range(7):

data[header[index]] = row[index]

dormitory_data.append(data)

# 分割数据,按照数据的特点

def csv_sort():

global dicts

dicts=[];i = 0

dormitory_datas = dormitory_data.copy()#字典迭代删除迭代数据是一个坑,需要我们时刻更新数据库值

dormitory_datass= dormitory_data.copy()

for x in dormitory_datass:

b = []

for sort in dormitory_datass:

a_1 = sort["宿舍编号"]

b.append(a_1)

dicts.append(x)

dormitory_data.remove(x)

dormitory_datass=dormitory_data.copy()

if b[i][:3] != b[i+1][:3]:

break

#保存数据,按照不同的分类

def keep_data():

import csv

import os

import codecs

for w in range(65,73):

W=chr(w)

path = '%s栋寝室'%W      # 创建总的文件夹

if not os.path.exists(path):

os.mkdir(path)

os.chdir(path)

else:

os.chdir(path)

a = []

dict = dormitory_data[0]

for headers in dict.keys():  # 把字典的键取出来,注意不要使用sorted不然会导致键的顺序改变

a.append(headers)

header = a  # 把列名给提取出来,用列表形式呈现

for k in range(1,5):

K=k

for p in range(1,7):

P=p

csv_sort()

with open('%s组%d栋%d楼.csv'%(W,K,P ),'a', newline='', encoding='utf-8-sig') as f:

writer = csv.DictWriter(f, fieldnames=header,)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。

writer.writeheader()  # 写入列名

writer.writerows(dicts)  # 写入数据

print("{}组{}栋寝室{}楼数据已经写入成功!!!! ! !".format(W,K,P))

def main():

csv_data()

keep_data()

if __name__ == '__main__':

main()

每文一语

学以致用,方能学以为用!

你学会了吗?此文转载,著作权归作者所有,如有侵权联系小编删除!

python文本分类汇总_用Python解决海量数据的分类汇总~一键化办公的神器!相关推荐

  1. python文本分类汇总_用Python解决海量数据的分类汇总一键化办公的神器!

    现实的创作来源于生活的灵感! 项目引入 昨天突然发现有一个比较头疼的问题,有一份数据是某一个学校的寝室数据,有不同的维度的分类,总的数据大概有4000数据,需要进行分类,然后按照不同分类维度进行表格制 ...

  2. 用Python解决海量数据的分类汇总~一键化办公的神器!

    项目引入 昨天突然发现有一个比较头疼的问题,有一份数据是某一个学校的寝室数据,有不同的维度的分类,总的数据大概有4000数据,需要进行分类,然后按照不同分类维度进行表格制作,最后生成8个文件夹,每个文 ...

  3. python文本框清空_用Python制作mini翻译器

    来源:http://suo.im/5ZI20R 1. 实例描述 在平时编程的过程中,会经常在网上翻译一些单词,本文使用Python制作一款翻译小工具,不仅可以自己用,还可以嵌入到程序当中.运行程序,效 ...

  4. python分类信息_用Python分析了 7 万款 App后,我们发现...

    原标题:用Python分析了 7 万款 App后,我们发现... 本文中使用 Scrapy 爬取了豌豆荚全网 70,000+ App ,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接 ...

  5. python 文本框位置_「每日一练」Python文本框的显示和插入

    Python强大之处在于对于数据的处理,而处理数据就离不开文本框,那么你知道Python中文本框是如何显示和插入吗? 案例 python文本框的显示和插入 先上代码~ 运行效果 题目详述 第一行: i ...

  6. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  7. python文本编辑器下载_海龟编辑器(Python编辑器)

    海龟编辑器提供可视化的编辑方式,可以让您在编辑代码的时候更加简单,软件提供图形编辑方式,在编程的时候软件有相关的提示,例如添加事件.控制.运算.字符串等内容都是有提示的,对于学习Python是很有帮助 ...

  8. python文本编辑器下载_海龟编辑器官方下载|海龟编辑器(Python编辑器)下载 v1.3.4 官方版 - 绿点软件站...

    编程软件,积木和代码一键转化,学起来简单有趣,可以让孩子们搭一搭积木就轻松写出Python代码,既可以提高孩子对编程的学习兴趣,又可以降低小朋友们学习Python编程的门槛,海龟编辑器扩展功能强大,支 ...

  9. python的pulp包_使用Python/PuLp解决线性规划问题

    Python中有许多第三方的工具可以解决这类问题,本教程介绍pulp工具包的使用. 一 · 教程讲解视频 二 · 常用的线性规划求解软件 1.Excel 2.Lingo 3.Matlab 三 · Py ...

最新文章

  1. linux 瞬间文件数没了,关于linux:如何快速汇总文件中的所有数字?
  2. active mq topic消费后删除_Spring cloud stream 整合mq
  3. 日志系统新贵Loki,确实比笨重的ELK轻
  4. ngnix服务器搭建
  5. python给用户打标签_python用户评论标签匹配的解决方法
  6. Notepad++集成nasm编译器
  7. 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念!
  8. C++引用与指针的比较
  9. DoraHacks的笔记
  10. scipy回归分析_业余时间学数据分析,如何快速上手
  11. 一小时搞定 简单VBA编程 Excel宏编程快速扫盲
  12. 我太机智了……30条关于数据行业内涵笑话漫画
  13. 51单片机的几种精确延时
  14. std::cunction() 简单描述
  15. golang 数组组合成最小的整数_整数数组拼成一个最小或最大的数
  16. 基于高光谱成像技术结合卷积神经网络的马铃薯病害检测
  17. 一、 Python 基础知识笔记 —— 《Python编程:从入门到实践(第二版)》学习笔记
  18. 昔日深圳打工妹周群飞或成中国新女首富
  19. 【量化交易】KDJ指标实现
  20. 马斯洛需求理论:找工作的需求层次分析,您在哪个阶段?

热门文章

  1. c语言自动导入数据类型,c语言数据类型
  2. 为什么使用v-for需要加key,key最好不是index
  3. 【谷歌浏览器】跨域问题
  4. eclipse的python插件名字怎么改,肿么装插件让eclipse当Pythonxy的ide
  5. eop如何烧写程序文件到开发板?
  6. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十九讲:apache+php+mysql开发环境搭建(wamp)
  7. java 数据结构JCF简介
  8. 电蒸汽发生器蒸汽压力的调节控制
  9. 金属钛改性二硒化钨纳米材料|p型磷掺杂二维二硒化钨纳米材料|碳纤维@二硒化钨纳米片核壳复合材料|FTO衬底上制备二硒化钨薄膜
  10. 内存数据库与传统磁盘数据库的本质区别?