日常篇(1):数据处理习惯及VSCode使用简介

介绍一下Vscode Python环境配置,并小结一下自己目前基于Python的数据分析工作习惯

之前的模式是基于Anaconda环境,使用Jupyter Notebook/Lab和pycharm,现在是基于Miniconda,用VSCode为主;至于涉及空间的处理,则主要是基于Python库(Gdal; geopandas...)、ArcPy以及QGIS、ArcMap等软件。

ps: QGIS在一些功能和处理速度等功能比ArcMap好用些,比如 Spatial join; Zonal statistic等,好用且速度更快,遗憾的是感觉QGIS的Python脚本功能不如ArcPy。

背景

言归正传,尽管jupyter notebook/lab是广为推崇的Python数据分析利器,我也用了很长一段时间,但网页版的jupyter偶尔出bug,每次启动还需要启动浏览器,且在文件夹及数据管理等方面不太方便,在好朋友推荐下转向了支持Jupyter的开源且轻巧的vscode,上手了一段时间觉得很舒服~

Vs Code的使用简介

下载链接官网,官方文档VSCode API

Learn:Jupyter Notebooks in VS Code

  1. 下载软件并安装,建议勾选”将打开文件添加到右键菜单”,方便在任意文件夹右击新建脚本
  2. 安装插件

具体看之后更新的这个推文-Python环境(2):安装及配置

jupyter notebook

最好是在本地预装好Miniconda 或 Anaconda,个人推荐前者

安装好之后在设置处搜索Python。然后找到添加conda env的地方将conda的安装路径填入

.py script

运行脚本时需要从上方打开Terminal-命令行窗口~

我的工作模式

不论数据获取、处理还是分析,编程都只是实现任务的工具之一,所以最核心的还是目的及思路步骤。

好记性不如烂笔头,对我而言记录逻辑和步骤是十分重要的,这便于复用和查错。

问题思路

这方面很难讲,我个人目前是习惯

  1. 先捋捋问题的核心是什么,最后要得到什么样的输出和数据结果,需要兼顾的问题等等
  2. 然后花一段时间结合数据、经验与熟系的工具拟定初步方案(这步若卡住则需要多做功课或请教师兄师姐老师)
  3. 觉得想清楚了差不多了就开始动手想具体步骤,也即实现方案的具体步骤
  4. 开始上手,代码+软件齐上阵,过程中记录出现的问题并视情况调整
  5. ……

如下图,这是我近期处理数据时候记录的一些笔记(基于typora),供参考,我也是最近才开始文本记录,对于一些步骤多点的任务,最好还是记录一下,当然,后续也会试情况不断调整和完善需要记录的内容,目前:

  1. 输出结果,时间
  2. 处理思路/步骤|时间记录
  3. 问题记录
  4. 主要代码附录

另外,实际一些小的案例,直接写在py脚本的开头简单写写就行,很多软件都有添加脚本header信息的功能,如以下案例我需要将网站抓取的原始GPS轨迹数据处理为表格,于是我的文件头是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*-coding:utf-8 -*-
'''
@File : json2shp.py
@Time : 2022/04/01 19:50:21
@Author : huangsh
@Version : 1.0
@Contact : 1126456109@qq.com
@Desc : 将json文件转换为geopandas csv
'''
"""
1. 导入json文件,将.json转换为csv文件,转换为列:pid,time,lng,lat,elev,speed,geometry-用wkt表示
2. 将csv转换为line几何类型,用wkt表示
3. 根据文件名(tid)将csv与表进行连接,得到最终的表

参考链接|API文档:
1.
"""
import os, time, json
from multiprocessing.pool import Pool
...

总之在数据处理分析过程中,充分捋清并记录自己的思维逻辑和实现步骤,并记录出现得到问题,能够提高效率

代码/工具实现思路

Python包的使用主要是依靠多看多记来熟练,此外,学会并且习惯看文档

通常数据量不大,不考虑效率会有很多种方法达到目的,查就好了,至于大的数据或者较慢的操作如空间处理,则需要通过多进程或者优化数据类型、代码逻辑来加速了,此处暂不展开

在有了思路的基础上,我写代码的习惯是遵循逻辑分解,Step by Step

  • 过程中要实时记录和调整思路
  1. 然后先在IPython或者jupyter中编写并实时调试,大量的数据一般是先跑一个案例测试

  2. 完成调试后加循环,视情况编写函数遍历或并行,如果文件很多或很大建议循环时加try记录报错情况(避免挂着程序以为能跑一晚上结果10分钟就报错了hh)

  3. 最后,如果代码行数较多时或需要并行则新建‘.py’文件写一下

  4. ...