Python代码按class列分类存表文件移动代码三大运营商招标信息数据整理

Posted 卖山楂啦prss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python代码按class列分类存表文件移动代码三大运营商招标信息数据整理相关的知识,希望对你有一定的参考价值。

按数据class列,每一个class单独存为一个表

不同学校信息

#第一步:调用pandas包
import pandas as pd
#第二步:读取数据
data = pd.read_excel('总成绩.xls')#读入数据文件
class_list = list(data['学校名称'].drop_duplicates())#获取数据class列,去重并放入列表


# 第三步:按照类别分sheet存放数据
for i in class_list: 
    df = data[data['学校名称']==i]
    df.to_excel(r"C:\\Users\\ABC\\Desktop\\体测抽查\\2018所有表格\\\\"+i+'.xlsx')

按不同类别,分步移动文件

按照学校类型,把表格移动到对应文件夹

import pandas as pd
import numpy as np
import os, sys
import openpyxl
import shutil, os

# 打开文件
path = r"C:\\Users\\ABC\\Desktop\\体测抽查\\2018所有表格"
dirs = os.listdir(path)
list_2020 = []
dw = pd.read_excel(r'C:\\Users\\ABC\\Desktop\\12.xlsx',sheet_name='2018')


# 输出所有文件和文件夹
for file in dirs:
    file1=file.replace('.xlsx','')
    try:
        if '城市' in dw[dw['学校名称']==file1]['类型'].tolist()[0]:
            shutil.move(r'C:\\Users\\ABC\\Desktop\\体测抽查\\2018所有表格\\\\'+file, r'C:\\Users\\ABC\\Desktop\\体测抽查\\2018城市\\\\'+file)
        else:
            shutil.move(r'C:\\Users\\ABC\\Desktop\\体测抽查\\2018所有表格\\\\'+file, r'C:\\Users\\ABC\\Desktop\\体测抽查\\2018农村\\\\'+file)
    except Exception:
        pass       

三大运营商招标信息数据整理

import time
import requests
from lxml import etree
from multiprocessing.dummy import Pool
from requests.exceptions import RequestException
import openpyxl
from fake_useragent import UserAgent
from urllib.parse import urlencode

import pandas as pd
import os

os.chdir(r'C:\\Users\\\\ABC\\Desktop')

import datetime
date = datetime.datetime.now().strftime('%Y-%m-%d')


base_url = 'https://caigou.chinatelecom.com.cn/MSS-PORTAL/announcementjoin/list.do?provinceJT=NJT'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
,'X-Requested-With': 'XMLHttpRequest'
    
}


formdata ={
'provinceJT': 'NJT',
'provinceCode': 12,
'provinceNames': '重庆',
'paging.start': 1,
'paging.pageSize': 10,
'pageNum': 10,
'goPageNum': 1,
'paging.start': 1,
'paging.pageSize': 10,
'pageNum': 10,
'goPageNum': 1
}
base_url = base_url + urlencode(formdata)


tb = pd.read_html(base_url,header =0)[3]



tb['时间'] = tb['创建时间日期'].apply(lambda x :x.split(' ')[0])

new_xm =  tb[tb['时间']==max(tb['时间'])]

# new_xm.to_csv(max(tb['时间'])+'.txt')

# new_xm.to_excel('12.xlsx')



#-------------------------------------------------------------------------------

yd = pd.read_excel('中国移动采购与招标网-采集的数据-后羿采集器.xlsx',header =2) 


yd['时间'] = yd['时间'].apply(lambda x :time.strftime("%Y-%m-%d", time.strptime(x, "%Y-%m-%d")))    

new_yd =  yd[yd['时间']==max(yd['时间'])]
new_yd.reset_index(inplace=True,drop=True)


# ---------------------------------------------------------------


lt = pd.read_excel('联通的数据-后羿采集器.xlsx',header =0) 
lt.columns = ['公告','时间','省份']

new_lt = lt[lt['时间']==max(lt['时间'])]

new_lt.reset_index(inplace=True,drop=True)


# 写入excel
import xlwt
f = xlwt.Workbook() #创建工作薄
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  
 
style = xlwt.XFStyle()
style.pattern = pattern

al = xlwt.Alignment()
al.horz = 0x02 # 设置水平居中
al.vert = 0x01 # 设置垂直居中
style.alignment = al
# 获取字典的键

styleBlueBkg = xlwt.easyxf('pattern: pattern solid, fore_colour yellow;')  # 红色

for s in range(len(new_yd.iloc[:,0])):
    sheet1.write(0,0,'移动',styleBlueBkg) #循环写入 竖着写
    sheet1.write(0,1,'') #循环写入 竖着写
    sheet1.write(0,2,'') #循环写入 竖着写
    sheet1.write(0,3,'') #循环写入 竖着写
    sheet1.write(1,0,'采购需求单位') #循环写入 竖着写
    sheet1.write(1,1,'公告类型') #循环写入 竖着写
    sheet1.write(1,2,'标题') #循环写入 竖着写
    sheet1.write(1,3,'时间') #循环写入 竖着写
    
    sheet1.write(s+2,0,new_yd.iloc[:,0][s]) #循环写入 竖着写
    sheet1.write(s+2,1,new_yd.iloc[:,1][s]) #循环写入 竖着写
    sheet1.write(s+2,2,new_yd.iloc[:,2][s]) #循环写入 竖着写
    sheet1.write(s+2,3,new_yd.iloc[:,3][s]) #循环写入 竖着写



for s in range(len(new_xm.iloc[:,0])):
    
    
    sheet1.write(len(new_yd.iloc[:,0])+3,0,'电信',styleBlueBkg) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,1,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,2,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,3,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,4,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,5,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,6,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,7,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3,8,'') #循环写入 竖着写

    
    sheet1.write(len(new_yd.iloc[:,0])+4,0,'省份') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,1,'是否终止') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,2,'公告名称') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,3,'公告编码') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,4,'公告类型') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,5,'创建时间') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,6,'开始时间') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,7,'截止时间') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4,8,'时间') #循环写入 竖着写    
    
    
    
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,0,new_xm.iloc[:,0][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,1,new_xm.iloc[:,1][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,2,new_xm.iloc[:,2][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,3,new_xm.iloc[:,3][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,4,new_xm.iloc[:,4][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,5,new_xm.iloc[:,5][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,6,new_xm.iloc[:,6][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,7,new_xm.iloc[:,7][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+s+1,8,new_xm.iloc[:,8][s]) #循环写入 竖着写
    
    
for s in range(len(new_lt.iloc[:,0])):
    
    
    sheet1.write(len(new_yd.iloc[:,0])+3+len(new_xm.iloc[:,0])+1+2,0,'联通',styleBlueBkg) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3+len(new_xm.iloc[:,0])+1+2,1,'') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+3+len(new_xm.iloc[:,0])+1+2,2,'') #循环写入 竖着写
            
    sheet1.write(len(new_yd.iloc[:,0])+4+len(new_xm.iloc[:,0])+1+2,0,'公告') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+len(new_xm.iloc[:,0])+1+2,1,'时间') #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+len(new_xm.iloc[:,0])+1+2,2,'省份') #循环写入 竖着写

    
    sheet1.write(len(new_yd.iloc[:,0])+4+len(new_xm.iloc[:,0])+1+2+s+1,0,new_lt.iloc[:,0][s]) #循环写入 竖着写
    sheet1.write(len(new_yd.iloc[:,0])+4+len(new_xm.iloc[:,0])+1+2+s+1,1,new_lt.iloc[:,1以上是关于Python代码按class列分类存表文件移动代码三大运营商招标信息数据整理的主要内容,如果未能解决你的问题,请参考以下文章

ABAP PDF格式文件导入系统,通过二进制存表

将文件进行分类整理

Python多线程实现批量文件移动(带进度条)

Python - csv writer 按列而不是按行写入

Python对多列文件中的数字进行排序[重复]

如何在python中对没有标题的大型csv信号文件进行分类?