专栏首页Python与Excel之交再见Excel!Pandas分分钟钟处理8w条数据!

再见Excel!Pandas分分钟钟处理8w条数据!

粉丝需求说明

今天一大早,就有一位粉丝,让我处理一个Padas问题,详情请看下图:

哎,他这个叙述确实有点难懂,我来翻译一下。

需求:有一个csv文件,里面有一些经纬度数据。其中每一行有若干组经纬度数据,都是用逗号隔开。我们需要做的就是,将每一个经纬度数据提取出来,分别存储到Excel的两列中,同时多添加一列,表示行号,总共就是3列。

原始数据截图:

我处理后截图:

我的测试

直接先上完整代码吧!

import pandas as pd
# 1. 读取数据
df = pd.read_csv("wgs84 - 副本.csv",header=None)
df.columns = ["列一","列二"]
## 2. 数据处理与数据写入
df1 = pd.DataFrame()
for index,value in enumerate(df["列一"]):
    y = value[10:-3].split(",")
    z = [[index+1] + i.strip().split(" ") for i in y]
    df1 = df1.append(z)
df1.columns = ["行号","经度","维度"]
## 3. 保存数据
df1.to_excel("经纬度.xlsx",index=None)

上述代码共分为3个部分,详细解释如下:

  • 首先是数据读取。由于给我的数据没有标题行,读取时候需要使用header=None参数,同时为了后续处理方便,为数据添加标题行。
  • 接着是数据处理和数据写入。由于每一行数据都在(( ))双括号中,我们需要先提取其中的字符串,然后按照,逗号切分,再按照空格切分,得到每个经纬度数据的列表。同时使用+加号拼接列表,就得到了每行数据,都是3个数据组成的列表嵌套。再使用append()函数,就可以将数据添加到表格中。
  • 最后是数据写入。我们将组织好的数据,最终写入到Excel文件中,不要索引行,因此使用了index=None参数。

为了更加清晰的展现这个效果,下面提取其中一条数据为大家讲解此过程。

① 取出其中一条数据
x = df["列一"][0]
x

结果如下:

② 切片+切分字符串
y = x[10:-3].split(",")
y

结果如下:

注意到上述结果中,存在一些空格,我们后续需要使用strip()函数去除掉。

③ 列表拼接+列表解析式
z = [[1] + i.strip().split(" ") for i in y]
z

结果如下:

④ 使用append函数添加数据
df1 = pd.DataFrame()
df1.append(z)

结果如下:

如果有8w+数据,怎么处理的快呢?

在请教了明佬以后,最终给出如下代码,仅需要十几秒,就可以处理8w+条数据。

import pandas as pd
import os
# 分块、分块、分块
chunks = pd.read_csv("wgs84.csv", chunksize=10000)
last = 0
for df in chunks:
    df.dropna(how="all", inplace=True)
    result = []
    for a, b in df.values:
        if not isinstance(a, str):
            continue
        if pd.isna(b):
            b = last+1
        elif isinstance(b, str) and not b.isdigit():
            print(a, b, last)
            continue
        for p in a[10:-3].split(","):
            result.append((b, *p.split()))
        if not pd.isna(b):
            last = int(b)
    df = pd.DataFrame(result, columns=["行号", "经度", "维度"])
    file = "result.csv"
    df.to_csv(file, index=False, mode='a',
              header=not os.path.exists(file), encoding="u8")

8w+的数据,最终生成后,却有800w条,Excel是打不开的。

为了大家能够更快的理解这段代码,有几个知识点,我给大家讲解一下。

① 列表前面加个*号,啥意思?

列表、元组前面加星号,作用是将列表解开成两个独立的参数,传入函数,字典前面加两个星号,是将字典解开成独立的元素作为形参。

x = "Polygon ((100.41370674 38.56406437, 100.41363237 38.56400317))"
# 不加*号
for i,p in enumerate(x[10:-3].split(",")):
    print(p.split())
# 加*号
for i,p in enumerate(x[10:-3].split(",")):
    print(*p.split())

结果如下:

② isinstance()函数,啥意思?

import numpy as np

a = 2
b = np.nan

isinstance (a,int)
isinstance (a,str)
isinstance (b,int)
isinstance (a,str)

结果如下:

好了,以上便是今天的全部内容了,如果你喜欢今天的内容,希望你能在下方点个赞和在看支持我,谢谢!

本文分享自微信公众号 - Python与Excel之交(Yi-Python-Excel)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python数据分析实战基础 | 初识Pandas

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一...

    数据森麟
  • 一文带你快速入门Python | 初识Pandas

    这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅。已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文。

    CDA数据分析师
  • Python数据分析实战基础 | 初识Pandas

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一...

    小小詹同学
  • Python数据分析实战基础 | 初识Pandas

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一...

    Python数据科学
  • Python数据分析实战基础 | 初识Pandas

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一...

    张俊红
  • Python数据分析实战基础 | 初识Pandas

    这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一...

    Python进阶者
  • Pandas实现分列功能(Pandas读书笔记1)

    最近发现自己特愿意扯和分享内容本身无关的事情,下述内容纯闲扯: pandas应该怎么分享困扰了我好久,但是看我公众号的朋友更困惑的是这个人为啥要分享panda...

    用户1332619
  • python科学计算之Pandas使用(三)

    Pandas 是基于 NumPy 的一个非常好用的库,正如名字一样,人见人爱。之所以如此,就在于不论是读取、处理数据,用它都非常简单。前两天介绍了 最常见的Pa...

    zenRRan
  • Excel数据处理你是选择Vba还是Python?当然是选pandas!

    本号之前已经分享过关于如何使用 Python 中的数据处理分析包 pandas 处理 Excel 的数据,本文继续分享一个小案例,此案例源于上周末帮朋友做的一个...

    咋咋
  • 20 个短小精悍的 pandas 骚操作

    本次为大家整理了一个pandas骚操作操作的大集合,共20个功能,个个短小精悍,一次让你爱个够。系列内容,请看?「pandas100个骚操作」话题。

    Python数据科学
  • Python统计汇总Grafana导出的csv文件到Excel

    原始文件是多个csv表格,第一列为时间戳,每10分钟统计生成一行,其余列为ip地址在该时间段内的访问次数

    公众号: 云原生生态圈
  • 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据

    大家好,我是Python进阶者。前一阵子给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,手把手教你4种...

    Python进阶者
  • 20 个短小精悍的 pandas 骚操作!

    本次为大家整理了一个pandas骚操作操作的大集合,共20个功能,个个短小精悍,一次让你爱个够。

    小F
  • 【Python环境】Python中的结构化数据分析利器-Pandas简介

    Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Pyt...

    陆勤_数据人网
  • 数据分析从零开始实战 (三)

    前面两篇文章基础篇(一)和基础篇(二)讲了数据分析虚拟环境创建和pandas读写csv、tsv、json格式的数据,今天我们继续探索pandas读取数据。 本系...

    龙哥
  • 从爬虫入坑到数据分析,分享几点我自学Python的经验

    身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景。我一直期待能有个工具解放我,直到我遇到了Python。

    用户5753894
  • 一日一技:Excel如何拆分单元格并自动填充

    这种表格,每一列的包含关系,人眼看起来一目了然。但是A列B列这种由多个单元格合并起来的单元格,在使用程序进行处理的时候却非常不方便。

    青南
  • 从事数据分析工作的必备技能

    DT(Data Technology)时代,公司对于数据越来越重视,身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会...

    数据森麟
  • 自学Python数据分析之后,我有几点经验分享 !

    DT(Data Technology)时代,公司对于数据越来越重视,身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会...

    昱良

扫码关注云+社区

领取腾讯云代金券