项目实训7

第三周第一次
今天主要是用Python对数据组新爬虫得到的2017——2019的农作物产量表进行更新(原有的数据只更新到2016年,数据库里的数据也到2016年为止,过于老旧了)

主要使用Python自带的pandas库对csv文件进行处理,得到自己想要的行列

原有的数据:
在这里插入图片描述
手动处理过后的数据,我手工增加了比较容易添加的城市和农作物种类这几列,通过Python的gbk模式打开以后可以看到,该csv文件有很多空白行和空白列:
在这里插入图片描述
空白列的处理在生成新的csv文件时就已经被完成,我们的最终要求是将小麦、玉米、棉花这三种作物的面积,总产量和亩产合并到一行,因此我写了三个函数,挑选不同作物相对应的列,分别把一个大表分成小麦、棉花、玉米三个小表,代码如下:

import pandas as pd


def readwrite1(input_file, output_file):
    data = pd.read_csv(input_file, sep=',', header=None, encoding="gbk")
    data.to_csv(output_file, sep=',', columns={0, 1, 2, 3,4,5}, header=None, index=False)


def readwrite2(input_file, output_file):
    data = pd.read_csv(input_file, sep=',', header=None, encoding="gbk")
    data.to_csv(output_file, sep=',', columns={0,1,6,7,8,9}, header=None, index=False)

def readwrite3(input_file, output_file):
    data = pd.read_csv(input_file, sep=',', header=None, encoding="gbk")
    data.to_csv(output_file, sep=',', columns={0, 1,10,11,12,13}, header=None, index=False)



input_file = "q菏泽.csv"
output_file1 = "data/q1.csv"
readwrite1(input_file, output_file1)
output_file2 = "data/q2.csv"
readwrite2(input_file, output_file2)
output_file3 = "data/q3.csv"
readwrite3(input_file, output_file3)`

处理效果如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可以看到,列已经按照我们的要求处理完成了,但是还是有很多空白行,这个我们最后导入数据库在进行处理。
这里我们一共有a——q张表,每张表处理后生成三张小表
在这里插入图片描述
生成的表:
在这里插入图片描述
我们将这些表合并为一张表(后来意识到好像先合并成一张表在分成三张总的小麦、玉米、棉花会比较方便,第一次使用Python处理数据不太熟练,之后通过实践一定可以方便快速的处理表单)

import pandas as pd
import os

Folder_Path = r'D:\PyCharm\data'  # 要拼接的文件夹及其完整路径,注意不要包含中文
SaveFile_Path = r'D:\PyCharm\data_a'  # 拼接后要保存的文件路径
SaveFile_Name = r'a.csv'  # 合并后要保存的文件名

# 修改当前工作目录
os.chdir(Folder_Path)
# 将该文件夹下的所有文件名存入一个列表
file_list = os.listdir()

# 读取第一个CSV文件并包含表头
df = pd.read_csv(Folder_Path + '\\' + file_list[0])  # 编码默认UTF-8,若乱码自行更改

# 将读取的第一个CSV文件写入合并后的文件保存
df.to_csv(SaveFile_Path + '\\' + SaveFile_Name, encoding="utf_8_sig", index=False)

# 循环遍历列表中各个CSV文件名,并追加到合并后的文件
for i in range(1, len(file_list)):
    df = pd.read_csv(Folder_Path + '\\' + file_list[i])
    df.to_csv(SaveFile_Path + '\\' + SaveFile_Name, encoding="utf_8_sig", index=False, header=False, mode='a+')

效果如下:
在这里插入图片描述
可以看出列已经满足需求但是还是有很多空白行,将其导入数据库,也是有很多全为null的行,我们用数据库查询将其删除

DELETE FROM citycrop_new WHERE city is null;

效果如下(中间原本是全为null的行,没有截屏上,现在空白行已经没有了):
在这里插入图片描述
最后我们在添加一个id栏位,设置为主键,自动递增即可

在这里插入图片描述
完成了数据更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值