持续创作,加速成长!这是我参与「掘金日新计划 · 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")
代码运行结果如下图所示:
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()
运行结果如下图所示:
情况2:无表头文件写入表头
当然,在遇到无表头的csv文件时,我们可以手动写入表头字段。在read_csv函数中指定names参数,可以手动为表格增加表头。表头以列表的形式传入,不同表头之间要以逗号分隔。
具体代码演示如下所示:
import pandas as pd
# 遇到无表头数据,可以手动添加表头字段
data_wubiaotou = pd.read_csv("data/data140190/人口_无表头.csv", names=["年份", "出生人口(万)", "总人口(万人)", "中国人均GPA(美元计)", "中国性别比例(按照女生=100)", "自然增长率(%)", "城镇人口(城镇+乡村=100)","乡村人口" ,"美元兑换人民币汇率", "中国就业人口(万人)"])
data_wubiaotou.head()
运行结果如下图所示:表头被按照顺序指定,并且能够正常显示出来了。
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()
运行结果如下图所示:
情况2:写入时不保留原表格行索引
- index=False:表示丢弃原行索引
- 写入后的csv文件保存在
./test1.csv路径下
# 不保留行索引
data.to_csv('./test1.csv',columns=["年份"], index=False)
pd.read_csv("./test1.csv").head()
运行结果如下图所示:这次保存下来的表格没有了原行索引。