从零开始学Python(4) |
您所在的位置:网站首页 › 数据图形分析方法 › 从零开始学Python(4) |
在上一次学习中,我们介绍了如何加载CSV文件,并在Jupyter笔记本上绘制条形图。这次,我们将介绍如何从CSV文件中提取任意数据并绘制各种图形。 让我们看看股票是涨还是跌之前,我们已经体验了用Pandas库来读取读取CSV数据并绘制图表。可以说,Pandas是一个非常强大的数据分析库。正如我们上次看到的那样,大家只需要简单的几行代码就能实现CSV文件的读取和表示。 现在,让我们进一步体验一下Pandas的强大功能吧。 import pandas as pd df = pd.read_csv("stock.csv", encoding="GB2312") df['成交笔数']![]() 从程序中我们可以看到,使用pdf.read_csv方法来读取CSV文件时,可以获得DataFrame type类型的表格对象,然后通过df [“ column name”]的方式可以取得任意列的数据。 并且我们还可以对取得的各列的数据进行四则运算。接下来,让我们计算一下收盘价格和开盘价格之间的差吧(股票涨跌)。 import pandas as pd df = pd.read_csv("stock.csv", encoding="GB2312") df["收盘价"] - df["开盘价"]![]() 像这样,两个列之间通过运算符减号(-)连接,就可以计算出每一天的股价涨跌情况。 不过,仅仅用上面的方法的话,输出的结果比较难以理解。在这里我们可以给输出结果的每一列加上一个标题。另外,从上图可以看出,如果把所有记录都显示出来的话,输出结果会比较长,在这里我们可以指定要输出的记录条数。 %matplotlib inline import pandas as pd df = pd.read_csv("stock.csv", encoding="GB2312") # 计算涨跌 --- (*1) df['涨跌'] = df["收盘价"] - df["开盘价"] # 排序 --- (*2) df = df.sort_values(by=["涨跌"], ascending=False) # 取得前10条 --- (*3) top5 = df[0:5] # 输出计算结果 --- (*4) top5.plot.bar(y=["涨跌"], x="日期") top5![]() 从上图可以看出,12/09和12/16两天的差价最大。言归正传,让我们来看看具体的代码。 在(* 1)部分,计算了收盘价和开盘价之间的差价。如前所述,使用Pandas,我们可以对指定的列进行数学计算,并且把计算的结果放到“涨跌”中,最后“涨跌”这一列会被添加到原始数据中。从上面的表格中我们可以看到,原始数据中的最后一列后面增加了“涨跌”列。 然后在(* 2)部分,我们以涨跌的幅度对数据进行了排列。 接下来在(* 3)部分中,把数据的前5条记录取出来赋给了变量top5。在Pandas检索指定范围的记录,请使用df [0:5]。这个表达式的意思是把第0行到第5行-1(即第4行)的记录取出来。 最后,在(* 4)部分,我们把取出的数据用表格和条形图的方式显示了出来。通过plot.bar方法,并指定x和y轴的数据序列就可以绘制出直观的条形图来了。 顺便问一下,如果先知道涨跌最小的记录,应该怎么办了?如果大家有兴趣的话,可以自己尝试修改一下代码。 提示:只需要在上面的代码中修改一个地方就可以实现! 以更易于理解的方式处理条形图上面的图中,涨跌都是正的,如果有负的情况,怎么更好的通过图表显示出来呢?让我们编写一个图表,清楚地显示正增长和负增长之间的边界。 %matplotlib inline import pandas as pd df = pd.read_csv("stock.csv", encoding="GB2312") # 计算涨跌 df['涨跌'] = df["收盘价"] - df["开盘价"] df = df.sort_values(by=["涨跌"], ascending=False) # 取出涨幅正和负的数据 --- (*1) mid = df[10:20] # 设置条状图的格式为“ggplot” --- (*2) import matplotlib matplotlib.style.use('ggplot') # 显示条状图 plt = mid.plot.bar(y=["涨跌"], x="日期") # 突出显示0界线 --- (*3) plt.axhline(0, color='k')![]() 以一种易于理解的方式绘制正负边界 和上次的例子相比,这个例子的代码并没有太多的不同。让我们关注一下有差异的部分吧。 在(* 1)部分,我们取出了第10至20行的数据(从0开始计数)。 再让我们重点看一下(* 2)和(* 3)部分。用(* 2)部分就可以绘制出ggplot样式的漂亮图形。并且(* 3)部分,我们设置了Y轴的0轴边界线的格式。 试试用饼图来显示涨幅数据接下来,让我们用饼图来看看涨幅前五的数据吧。 %matplotlib inline import pandas as pd import matplotlib matplotlib.style.use('ggplot') df = pd.read_csv("stock.csv", encoding="GB2312") # 计算涨跌,并进行排序 df['涨跌'] = df["收盘价"] - df["开盘价"] df = df.sort_values(by=["涨跌"], ascending=False) # 取出前5条数据 top = df[0:5] # 绘制饼图 --- (*1) top["涨跌"].plot.pie(labels=top["日期"], autopct='%.0f')![]() 这表明东京的增长率惊人。并与爱知县和Sa玉县继续。 (* 1)部分的代码是绘制饼图的代码。到目前为止,把之前绘制条状图的plot.bar修改为plot.pie。此外,通过参数labels可以给饼图添加标签,并且通过参数autopct就可以显示百分比了。 同理,我们也可以绘制出line/barh/hist/box/kde/area/scatter/hexbin等各种图。有关详细信息,请查阅 Pandas手册 总结在上一次学习的的基础上,我们运用了各种图表来显示股价相关数据。 这次学习的例子中,不管哪个例子,我们都只用了10行左右的代码就可以用表格或图形来显示我们想知道的数据。并且运用Pandas库,我们还可以简单的进行四则运算。 通过这两次的学习,想必大家已经体会到使用Pandas和Jupyter笔记本,您可以绘制出很多更有意义的图形。所以大家可以参考这两次学习的例子,尝试对自己工作中的数据进行数据分析和可视化吧。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |