一日二技:Pandas 与 Docker 的使用技巧,


pandas 读取无头 CSV

我们知道,CSV 一般是长这样的:

其中,第一行的name,salary,work叫做 CSV 的头(header)。正常情况下,CSV 都是有头的,所以当我们使用 pandas 读取 CSV 的时候非常方便:

  1. import pandas as pd 
  2.  
  3. df = pd.read_csv('example.csv') 
  4. print(df) 

运行效果如下图所示:

但有时候,一些特殊的 CSV 文件可能没有头。例如他们可能长成下面这样:

这种情况下,如果直接使用 pandas 读取,第一行数据就会变成头,如下图所示。但这样显然不是我想要的结果:

为了解决这种问题,有两种解决方法。第一种方法,是用文本编辑器打开这个 CSV 文件,手动给他把头加上,保存。然后再用 pandas 来读。

第二种方法是在 pandas 读取的时候,增加一个参数names,它的值是一个列表,也就是头:

  1. import pandas as pd 
  2.  
  3. df = pd.read_csv('example.csv', names=['name', 'salary', 'work']) 
  4. print(df) 

运行效果如下图所示:

Docker build 提高 apt-get 速度

在国内使用 Docker 构建基于 Ubuntu 的镜像时,默认使用的是官方源。由于众所周知的原因,构建的速度可能很慢。如果是直接操作宿主机的 Ubuntu,我们可以使用 vim 或者图形界面修改源,使用阿里源从而提高速度。

如果是在 Docker 里面应该怎么办呢?我们就可以使用Linux 文本处理三剑客之一的sed来非交互式修改源文件。

在 Docker 中增加如下两行语句:

  1. RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list 
  2. RUN apt-get clea 

它的作用是把/etc/apt/sources.list文件中的所有archive.ubuntu.com替换为mirrors.aliyun.com。从而提高速度。

所谓的 Linux 文本处理三剑客,指的是grep、awk和sed。只要掌握常见用法,就能大大提高你的开发效率。

本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。

相关内容