零基础学Python--强大的Pandas

作者: Q科技 | 来源:发表于2019-03-21 21:21 被阅读0次

    说到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真的是非常的简单,也非常的容易入门和学习的一门语言。其实,深度学习也是一样,大家讳莫如深的人工智能和深度学习,我们从应用的角度来讲,也是一门跨行业跨领域都可以学习的技术。

    人工智能与深度学习做量化请关注:AI量化(https://t.zsxq.com/RvfY37y) 星球限时免费,如需加入,请私信我获得免费邀请码!

    零基础学习Python与深度学习应用请关注星球:Python与深度学习 https://t.zsxq.com/bUFayZ3

    微信公众号:QTechAI

    相关文章

      网友评论

        本文标题:零基础学Python--强大的Pandas

        本文链接:https://www.haomeiwen.com/subject/goshvqtx.html