Pandas结果导出
导出为Excel
注意:需要安装依赖模块openpyxl
1 | df.to_excel(r'文件名.xlsx') |
如果原来的DataFrame没有Index列,则在生成的时候会多处一列index
1 | df.to_excel(r'文件名.xlsx', index = False) # 不生成默认index列 |
导出为CSV
1 | df.to_csv(r'filename.csv', index = False, sep = '#') # 可以不生成默认index列,也可以自定义分隔符 |
如果遇到编码错误,则在保存的时候添加参数encoding = ‘utf_8_sig’
数据可视化
数据可视化的基本流程
- 整理数据
- 明确目的
- 寻找合适的表现形式
展现结果的方式有哪些:
- 文字
- 表格
- 图形
1 | import matplotlib.pyplot as plt |
如何建立画布和坐标系
创建画布
matplotlib会自动提供一个画布对象,如果使用自定义的画布对象,则就需要新建一个figure对象,如下
1 | fig = plt.figure(figsize = (8, 6)) # 创建画布对象,figsize规定了画布的大小 |
创建坐标系
有四种方法。
add_subplot方法
该方法是figure对象的子函数
1 | ar1 = fig.add_subplot(1, 1, 1) # 三个参数的含义:第一个参数代表坐标系的行数,第二个参数代表坐标系的列数,第三个参数代表当前坐标系的序号,该序号是一个从1开始的自然数。 |
该方法在代码执行完后不显示图像,需要手动显示
plt.subplot2grid方法
无需figure对象,直接是matplotlib的子函数
1 | plt.subplot2grid((2, 2), (0, 0)) # 创建一个两行两列的坐标系(第一个参数),指定当前坐标系是第一行第一列的那一个(第二个参数) |
plt.subplot方法
1 | plt.subplot(2, 2, 1) # 创建一个两行两列的图像(第一个参数),指定当前是第一个(第二个参数),代码执行完后显示坐标系。序号是从1开始的自然数(第三个参数) |
plt.subplots方法
1 | fig, axes = plt.subplots(2, 2) # 直接显示四个图像 |
利用坐标系创建图形
1 | import numpy as np |
注意:如果自定义了figure对象,那么所有的画图方法都会按照figure对象的设置来
基本属性设置
设置坐标轴标题
1 | plt.plot(x, y) # 画图 |
设置坐标轴的刻度
1 | plt.plot(x, y) |
设置刻度线的显示模式
1 | plt.tick_params(which = 'both', direction = 'inout', labelbutton = False) |
设置表格的网格线
1 | plt.grid(True) # 是否绘制网格线,还有which和axis两个参数可选 |
设置图例
如果要显示图例,必须在plot方法里设置label参数,否则图例无法显示
1 | plt.legend() # 直接调用空方法即可显示图例。该方法有一个loc参数,默认取值是best,意味着程序将选择最合适的位置来生成图例。 |
设置图表标题
1 | plt.title('1-6月份注册人数统计图') # 存在一个loc参数,指定标题显示位置,默认为center |
添加数据标签
1 | plt.text(2, 2, '节点标签', ha = 'center', va = 'bottom') # 前两个参数是标签显示的位置,最后一个参数是标签文字。可选参数有va:垂直对齐、ha:水平对齐、fontsize:字号 |
常见的统计图形绘制
常见的统计图形有:
- 折线图
- 柱状图
- 条形图
- 直方图
- 箱型图
- 散点图
折线图
1 | x = [x for x in range(1,11)] |
柱状图
1 | x = [x for x in range(1,11)] |
柱状图上显示数字
1 | for a, b in zip(x, y): |
柱状图有两个变形:
- 簇状柱状图
- 堆积柱状图
簇型柱状图
1 | x = np.array([x for x in range(1,11)]) # 用python原生列表做会出现问题 |
对两个柱状图添加数据标签如下:
1 | for a, b in zip(x, y1): |
堆积柱状图
1 | x = np.array([x for x in range(1,11)]) # 用python原生列表做会出现问题 |
条形图
1 | x = np.array([x for x in range(1,11)]) # 用python原生列表做会出现问题 |
直方图
主要观测数据的分布形态,主要作用于连续型变量。横坐标代表数据的分段(频数),纵坐标代表频率
1 | data = np.random.randn(10000) # 随机生成10000个符合正态分布的数据 |
散点图
观测变量分布时常用,也用于观测各个变量之间的相关关系。
1 | x = np.array([x for x in range(1,11)]) # 用python原生列表做会出现问题 |
注:查看内存使用的方法为sys.geisizeof(变量),就会返回变量占用的内存