pythonpandas入门_零基础学Python--强大的Pandas

说到Pandas,对于做数据分析和处理以及机器学习的同学,可以说是大名鼎鼎。我们可以用Pandas这个开源的Python包来做什么呢?可以做的事情太多了,以至于很多人可能只会用到其功能的一部分。

在Python的世界里,像这样的软件包可以说是非常的多,这也是为什么Python的用途如此之广的原因。看过我前面的文章的同学可能还记得,我们在讲列表的时候,用读取普通文件的方式去读取了一个CSV格式的文件。可能有些同学不清楚CSV是一个什么样的格式?其实很简单,它类似于Excel,不过分隔符是逗号。

本文我们将用Pandas来读取文件,并进行一些基本处理,让大家对Pandas来有一个基本的概念。我们仍然使用上次使用过的文件,但我们进行一些少许的删除修改,以方便大家查看和拷贝,文件内容如下。

date,open,high,low,close

19991110,29.5,29.8,27.0,27.75

19991111,27.58,28.38,27.53,27.71

19991112,27.86,28.3,27.77,28.05

19991115,28.2,28.25,27.7,27.75

19991116,27.88,27.97,26.48,26.55

19991117,26.5,27.18,26.37,27.18

19991118,27.2,27.58,26.78,27.02

19991119,27.5,27.53,26.8,26.88

19991122,26.88,26.95,26.3,26.45

19991123,26.45,26.55,26.1,26.45

我们仍然是用这样一个OHLC的数据来做示例,大家可以看到这个文件每一列对应有相应的名称,现在来看看如何用Pandas来读取这个文件。

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df)

就这么简单的两行代码,就可以将CSV格式文件的内容读出到一个Pandas的Dataframe中。我们来看看结果是怎么样的。注意我们这里使用四个‘>’符号来表示一个缩进。

>>>>date open high low close

0 19991110 29.50 29.80 27.00 27.75

1 19991111 27.58 28.38 27.53 27.71

2 19991112 27.86 28.30 27.77 28.05

3 19991115 28.20 28.25 27.70 27.75

4 19991116 27.88 27.97 26.48 26.55

5 19991117 26.50 27.18 26.37 27.18

6 19991118 27.20 27.58 26.78 27.02

7 19991119 27.50 27.53 26.80 26.88

8 19991122 26.88 26.95 26.30 26.45

9 19991123 26.45 26.55 26.10 26.45

我们现在将Pandas读取出来了,那么我们接下来如何对它进行访问和处理呢?其实也很简单,我们来看一些基本的操作!

获得一整列的值

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df['date'])

运行结果:

0 19991110

1 19991111

2 19991112

3 19991115

4 19991116

5 19991117

6 19991118

7 19991119

8 19991122

9 19991123

Name: date, dtype: int64

我们可以看到,最后打印出了这一列的Name和类型。

访问某行某列的元素

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df['date'][3])

运行结果:

19991115

获得某一行的所有元素

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df.loc[3,:])

其中loc是Pandas中用的比较多的,另外还有iloc是用index来进行定位的。有很多种不一样的用法,我们后面会专题来介绍。本文我们仅仅做一个初步的了解。

运行结果:

date 19991115.00

open 28.20

high 28.25

low 27.70

close 27.75

Name: 3, dtype: float64

我们可以看到读取出来的date的类型变成了浮点类型,实际使用的过程中我们可以指定类型,这部分后面会专题来讲一些技巧。

删除一列

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df.drop('close', axis=1))

运行结果:

>>>> date open high low

0 19991110 29.50 29.80 27.00

1 19991111 27.58 28.38 27.53

2 19991112 27.86 28.30 27.77

3 19991115 28.20 28.25 27.70

4 19991116 27.88 27.97 26.48

5 19991117 26.50 27.18 26.37

6 19991118 27.20 27.58 26.78

7 19991119 27.50 27.53 26.80

8 19991122 26.88 26.95 26.30

9 19991123 26.45 26.55 26.10

删除一行

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df.drop(df.index[1]))

运行结果:

date open high low close

0 19991110 29.50 29.80 27.00 27.75

2 19991112 27.86 28.30 27.77 28.05

3 19991115 28.20 28.25 27.70 27.75

4 19991116 27.88 27.97 26.48 26.55

5 19991117 26.50 27.18 26.37 27.18

6 19991118 27.20 27.58 26.78 27.02

7 19991119 27.50 27.53 26.80 26.88

8 19991122 26.88 26.95 26.30 26.45

9 19991123 26.45 26.55 26.10 26.45

我们可以看到,index为1这一行被删除了!在后面的文章里面我们会讲到如何重新进行索引,这里我们暂时不关注。

判断Dataframe是否为空

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

print(df.empty)

运行结果:

False

修改某行某列的值

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

df.at[1, 'date'] = 20190318

print(df)

运行结果:

>>>>date open high low close

0 19991110 29.50 29.80 27.00 27.75

1 20190318 27.58 28.38 27.53 27.71

2 19991112 27.86 28.30 27.77 28.05

3 19991115 28.20 28.25 27.70 27.75

4 19991116 27.88 27.97 26.48 26.55

5 19991117 26.50 27.18 26.37 27.18

6 19991118 27.20 27.58 26.78 27.02

7 19991119 27.50 27.53 26.80 26.88

8 19991122 26.88 26.95 26.30 26.45

9 19991123 26.45 26.55 26.10 26.45

接下来我们来看如何把Pandas Dataframe重新写入到CSV文件中。

import pandas as pd

file = 'ohlcv.txt'

df = pd.read_csv(file)

df.at[1, 'date'] = 20190318

df['factor'] = 1.0

df.to_csv(file, index=False)

我们可以看到文件的内容变为:

date,open,high,low,close,factor

19991110,29.5,29.8,27.0,27.75,1.0

20190318,27.58,28.38,27.53,27.71,1.0

19991112,27.86,28.3,27.77,28.05,1.0

19991115,28.2,28.25,27.7,27.75,1.0

19991116,27.88,27.97,26.48,26.55,1.0

19991117,26.5,27.18,26.37,27.18,1.0

19991118,27.2,27.58,26.78,27.02,1.0

19991119,27.5,27.53,26.8,26.88,1.0

19991122,26.88,26.95,26.3,26.45,1.0

19991123,26.45,26.55,26.1,26.45,1.0

对,除了修改了第1行的日期,我们还添加了一列Factor值全部为1.0。

对Pandas的理解我们就讨论到这里,目的主要是为了让大家有一个基本的认识。其实大家可以看到区区几行代码,已经做了我们用其他语言几百上千行代码的事情。我想如果阅读了我前面的文章的同学看到这里,应该会对Python产生了浓厚的兴趣。从文章的内容,大家也应该可以发现Python真的是非常的简单,也非常的容易入门和学习的一门语言。其实,深度学习也是一样,大家讳莫如深的人工智能和深度学习,我们从应用的角度来讲,也是一门跨行业跨领域都可以学习的技术。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值