在上一次学习中,我向大家展示了如何安装Jupyter笔记本,以及利用它来编写Python代码并立即执行的方法。今天,就让我们来挑战一下用Jupyter笔记本来读取CSV文件,并且可视化展示其内容的方法吧!
关于CSV文件
在日常工作中使用的许多数据,大部分是通过电子表格软件创建的。比如,我们通常会用Excel来管理销售数据,客户数据,库存数据等数据内容。
但是,当我们对这些用电子表格创建的数据进行编程时,就会发现读取和分析这些原始Excel文件的工作会变得非常麻烦。
为了能够更方便的操作Excel数据,我们有一个简便的方法,那就是先把Excel文件转化成CSV文件,然后用程序对CSV进行操作就可以了。大多数电子表格软件和数据库都支持以CSV格式导出数据。所以可以说CSV文件是一种用于处理电子表格数据再好不过的格式了。
首先,CSV数据格式如下。在这里,我们以某一支股票的交易数据为例。
日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值,成交笔数
2016-01-08,'002566,益盛药业,14.23,14.46,13.26,14.2,13.8,0.43,3.1159,2.6702,8837225,124872735.08,4709441268.0,4709441268.0,8033
2016-01-07,'002566,益盛药业,13.8,15.2,13.79,15.01,15.32,-1.52,-9.9217,0.829,2743643,39363057.52,4567132080.0,4567132080.0,2247
2016-01-06,'002566,益盛药业,15.32,15.44,14.85,14.9,14.9,0.42,2.8188,2.6798,8868778,134679146.09,5070178512.0,5070178512.0,8150
2016-01-05,'002566,益盛药业,14.9,15.18,13.92,14.02,14.68,0.22,1.4986,3.9569,13095418,192227441.44,4931178840.0,4931178840.0,11477
在CSV中,每行记录一条记录。一条记录可以具有多个用逗号分隔的字段。如上表所示,第一行(第一列)通常用作标题。
这样,CSV数据就简单地由换行符和逗号分隔,因此,通过编程可以非常简单地对其进行操作,这是一个很大的优势。
使用Jupyter笔记本读取CSV文件
现在,就让我们将此CSV数据加载到Jupyter笔记本中。
将需要加载的CSV文件,复制到Jupyter启动目录中。
![]() |
将CSV文件复制到Jupyter的启动目录 |
启动Jupyter Notebook
要启动Jupyter,请先启动命令行。从开始菜单运行“ Anaconda3> Anaconda Prompt”。然后输入以下Jupyter Notebook启动命令:
jupyter notebook
Web浏览器启动后,点击屏幕右上方的“New”按钮,并选择“ Python3”,新建一个笔记本。
![](https://i-blog.csdnimg.cn/blog_migrate/c73673aad7a90bbc8b760c7218dea88c.png)
通过编写以下两行代码,您可以读取CSV文件并将其以表格形式显示在屏幕上。上次也介绍过了它使用一个名为Pandas的库来支持数据分析。
import pandas as pd
pd.read_csv("stock.csv", encoding="GB2312")
![](https://i-blog.csdnimg.cn/blog_migrate/be344dade34bb6ec2f2b080968cfe16d.png)
上图中,此CSV以日期的降序排列,让我们试着升序排列和显示。要排序,只需使用sort_values方法。
import pandas as pd
pd.read_csv("stock.csv", encoding="GB2312")
df.sort_values(by=["成交笔数"], ascending=True)
![](https://i-blog.csdnimg.cn/blog_migrate/7fbaaf2b909d2992675979583275b987.png)
该程序读取CSV文件,并使用sort_values方法输出排序后的文件。这样,可以说Python很有吸引力,因为它可以非常简单地描述。顺便说一下,如果升序= True的部分改写为升序= False,则它将按总体的降序排列(即降序)。
绘制条形图
接下来,让我们基于CSV文件绘制一个条形图。
从CSV文件中提取数据并编写条形图很容易。下面是一个程序,以2016年为Y轴绘制条形图。
%matplotlib inline
import pandas as pd
df = pd.read_csv("stock.csv", encoding="GB2312")
df.plot.bar(y=['成交笔数'])
![](https://i-blog.csdnimg.cn/blog_migrate/4d1ccc95a9298789702165b4452a2d9d.png)
为了在Jupyter中绘制图形,我们需要在代码前面加上“%matplotlib inline”。然后要编写条形图,只需调用plot.bar方法即可。另外,像这个例子一样,CSV中有很多列的时候,只需要指定将哪一列用作Y轴即可。
如果想同时显示成交笔数和流通市值的条形图的话,则可以写成下面这样:会自动显示不同颜色。
%matplotlib inline
import pandas as pd
df = pd.read_csv("stock.csv", encoding="GB2312")
df.plot.bar(y=['成交笔数','流通市值'])
![](https://i-blog.csdnimg.cn/blog_migrate/97d314920de81627994fe81b24de8a7b.png)
关于中文显示乱码问题
从上面的图中可以看到,由于没有制定绘图时的中文字体,图中的中文部分显示成了乱码“□”。
为了解决中文的乱码问题,可以采取以下两种方式:
解决方式一:
用下面的代码获取配置文件matplotlibrc所在路径
import matplotlib
#1. 获取matplotlibrc文件所在路径
matplotlib.matplotlib_fname()
修改此配置文件,一劳永逸,不用在每个脚本中写代码解决中文显示问题
font.family : Microsoft YaHei
axes.unicode_minus : False
解决方式二:
在python脚本中增加配置支持中文的代码:其实本质上讲还是和方式一一样的。
from pylab import mpl
mpl.rcParams['font.family'] = ['Microsoft YaHei'] # 指定默认字体:解决plot不能显示中文问题
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
然后,再次执行该程序时,中文内容将正确显示。
![](https://i-blog.csdnimg.cn/blog_migrate/80f9b8af0a4525c77ebcbc0121e45749.png)
如上所述,今天,我们创建了一个程序,该程序使用Jupyter笔记本读取CSV文件,并以表格或者图形的方式进行表示。从今天介绍的内容大家可以看到使用Jupyter笔记本可以非常轻松地将CSV文件的内容进行可视化。下次,将向大家进一步介绍如何进行图形绘制,请大家期待吧!