【数据处理】Pandas库:画图与文件读取

1,690 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

注意:本案例使用 Jupyter Notebook 进行案例演示

1. Pandas画图

pandas库中集成了matplotlib库,可以直接进行调用,在相应的DataFrame后,加上.plot就能直接进行绘图,具体语法格式如下所示:

pandas.DataFrame.plot

  • DataFrame.plt(x=None, y=None, kind='line')
    • x:x数据

    • y:y数据

    • kind:图类型

      • 'line':折线图
      • 'bar':柱状图
      • 'barth':
      • 'hist':直方图
      • 'pie':饼图
      • 'scatter':散点图

我们想绘制散点图观察一下两者之间(年份与自然增长率)之间的关系:首先导入相关库,前几行代码是解决中文字体显示问题,然后读取数据,最后使用.plot函数绘制散点图。具体代码如下所示:

# 看一下两者之间的关系x="年份", y="自然增长率(%)"
import pandas as pd
import seaborn as sns
from pylab import mpl
from matplotlib.font_manager import FontProperties
myfont=FontProperties(fname=r'/usr/share/fonts/fangzheng/FZSYJW.TTF',size=12)
sns.set(font=myfont.get_name())

people = pd.read_csv("data/data140190/人口.csv")
people.plot(x="年份", y="自然增长率(%)", kind="scatter")

代码运行结果如下图所示:

image.png

2. 文件读取与存储

2.1 read_csv读取文件

  • pandas.read_csv(filepath_or_buffer, sep = ',')

    • filepath_or_buffe:文件路径
    • usecols:指定读取的列名,列表形式

情况1:读取指定字段

导入pandas库,然后使用pd.read_csv读取csv文件

  • 使用usecols=['年份','出生人口(万)']:表示只读取“年份”与“出生人口(万)”这两个字段
  • 注意usecols要用列表形式传入
  • .head()表示查看表的前几行
import pandas as pd 
data = pd.read_csv("data/data140190/人口.csv", usecols=['年份','出生人口(万)']) 
data.head()

运行结果如下图所示:

image.png

情况2:无表头文件写入表头

当然,在遇到无表头的csv文件时,我们可以手动写入表头字段。在read_csv函数中指定names参数,可以手动为表格增加表头。表头以列表的形式传入,不同表头之间要以逗号分隔。

具体代码演示如下所示:

import pandas as pd
# 遇到无表头数据,可以手动添加表头字段
data_wubiaotou = pd.read_csv("data/data140190/人口_无表头.csv", names=["年份", "出生人口(万)", "总人口(万人)", "中国人均GPA(美元计)",	"中国性别比例(按照女生=100)", "自然增长率(%)", "城镇人口(城镇+乡村=100)","乡村人口" ,"美元兑换人民币汇率", "中国就业人口(万人)"])
data_wubiaotou.head()

运行结果如下图所示:表头被按照顺序指定,并且能够正常显示出来了。

image.png

2.2 to_csv写入文件

写入csv文件的语法格式如下所示:

对象名.to_csv(path_or_buf=None, sep=',' , columns=None, header=True, index=True, mode='w', encoding=None)
  • path_or_buf:文件路径
  • sep:分隔符,默认用“,”隔开
  • columns:选择需要的列索引
  • header:是否写进列索引值
  • index:是否保存并写入行索引
  • mode:'w':重写,'a':追加

情况1:写入时不保留原表行索引

  • 将写入后的表格保存在./test.csv路径下
  • columns=["年份"]:将指定列写入csv文件
# 保留行索引,并保存指定列
data.to_csv('./test.csv',columns=["年份"])
pd.read_csv("./test.csv").head()

运行结果如下图所示:

image.png

情况2:写入时不保留原表格行索引

  • index=False:表示丢弃原行索引
  • 写入后的csv文件保存在./test1.csv路径下
# 不保留行索引
data.to_csv('./test1.csv',columns=["年份"], index=False)
pd.read_csv("./test1.csv").head()

运行结果如下图所示:这次保存下来的表格没有了原行索引。

image.png