从零开始学Python(3) -----用Jupyter可视化显示CSV文件内容

时间:2024-12-17 07:14:00

 

在上一次学习中,我向大家展示了如何安装Jupyter笔记本,以及利用它来编写Python代码并立即执行的方法。今天,就让我们来挑战一下用Jupyter笔记本来读取CSV文件,并且可视化展示其内容的方法吧!

关于CSV文件

在日常工作中使用的许多数据,大部分是通过电子表格软件创建的。比如,我们通常会用Excel来管理销售数据,客户数据,库存数据等数据内容。

但是,当我们对这些用电子表格创建的数据进行编程时,就会发现读取和分析这些原始Excel文件的工作会变得非常麻烦。

为了能够更方便的操作Excel数据,我们有一个简便的方法,那就是先把Excel文件转化成CSV文件,然后用程序对CSV进行操作就可以了。大多数电子表格软件和数据库都支持以CSV格式导出数据。所以可以说CSV文件是一种用于处理电子表格数据再好不过的格式了。

首先,CSV数据格式如下。在这里,我们以某一支股票的交易数据为例。

股票历史数据

  1. 日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值,成交笔数
  2. 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
  3. 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
  4. 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
  5. 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”,新建一个笔记本。

当Jupyter笔记本启动时,让我们从右上方的New开始

通过编写以下两行代码,您可以读取CSV文件并将其以表格形式显示在屏幕上。上次也介绍过了它使用一个名为Pandas的库来支持数据分析。

  1. import pandas as pd
  2. pd.read_csv("", encoding="GB2312")
显示导入的CSV数据

上图中,此CSV以日期的降序排列,让我们试着升序排列和显示。要排序,只需使用sort_values方法。

  1. import pandas as pd
  2. pd.read_csv("", encoding="GB2312")
  3. df.sort_values(by=["成交笔数"], ascending=True)
使用Jupyter,您只需要编写两行代码就可以获取格式化后的表格。

该程序读取CSV文件,并使用sort_values方法输出排序后的文件。这样,可以说Python很有吸引力,因为它可以非常简单地描述。顺便说一下,如果升序= True的部分改写为升序= False,则它将按总体的降序排列(即降序)。

绘制条形图

接下来,让我们基于CSV文件绘制一个条形图。

 

从CSV文件中提取数据并编写条形图很容易。下面是一个程序,以2016年为Y轴绘制条形图。

  1. %matplotlib inline
  2. import pandas as pd
  3. df = pd.read_csv("", encoding="GB2312")
  4. (y=['成交笔数'])
成交笔数条形图

为了在Jupyter中绘制图形,我们需要在代码前面加上“%matplotlib inline”。然后要编写条形图,只需调用方法即可。另外,像这个例子一样,CSV中有很多列的时候,只需要指定将哪一列用作Y轴即可。

如果想同时显示成交笔数和流通市值的条形图的话,则可以写成下面这样:会自动显示不同颜色。

  1. %matplotlib inline
  2. import pandas as pd
  3. df = pd.read_csv("", encoding="GB2312")
  4. (y=['成交笔数','流通市值'])
同时显示成交笔数和流通市值时的条形图

 

关于中文显示乱码问题

从上面的图中可以看到,由于没有制定绘图时的中文字体,图中的中文部分显示成了乱码“□”。

为了解决中文的乱码问题,可以采取以下两种方式:

解决方式一:

用下面的代码获取配置文件matplotlibrc所在路径

  1. import matplotlib
  2. #1. 获取matplotlibrc文件所在路径
  3. matplotlib.matplotlib_fname()

修改此配置文件,一劳永逸,不用在每个脚本中写代码解决中文显示问题

  1.         : Microsoft YaHei
  2. axes.unicode_minus  : False

解决方式二:

在python脚本中增加配置支持中文的代码:其实本质上讲还是和方式一一样的。

  1. from pylab import mpl
  2. [''] = ['Microsoft YaHei']    # 指定默认字体:解决plot不能显示中文问题
  3. ['axes.unicode_minus'] = False           # 解决保存图像是负号'-'显示为方块的问题

然后,再次执行该程序时,中文内容将正确显示。

Jupyter笔记本中正确显示中文

如上所述,今天,我们创建了一个程序,该程序使用Jupyter笔记本读取CSV文件,并以表格或者图形的方式进行表示。从今天介绍的内容大家可以看到使用Jupyter笔记本可以非常轻松地将CSV文件的内容进行可视化。下次,将向大家进一步介绍如何进行图形绘制,请大家期待吧!