『python』科学计算专项_科学绘图库matplotlib学习(下)

基本的读取csv文件并绘制饼图

由于之前没有过实际处理的经验,所以这个程序还是值得一看,涉及了处理表格数据的基本方法:

import matplotlib.pyplot as plt
import pandas as pd

# csv读取文件
data = pd.read_csv(‘OutOrder.csv‘,encoding=‘gb2312‘)

# 每一列都兼容numpy的方法
a = data[‘方式‘].values

# 获取本列的内容的各种可能
typename = []
for i in a:
    if i not in typename:
        typename.append(i)

# 获取每种可能的数目
typenum = []
for i in typename:
    typenum.append(sum(a==i))
print(typenum)

# 绘制饼图
plt.axis(‘equal‘)
plt.pie(typenum,labels=typename,shadow=True,
        labeldistance=1.1,autopct=‘%3.1f%%‘,
            startangle=0,pctdistance=0.8)
plt.legend()
plt.show()

添加了时间处理的统计图,稍微复杂一点

有两个地方值得注意:

  • str字符串转换为datetime时间对象的两种方法(datetime包和pandas内置集成)
  • 双纵坐标图的绘制方法
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
import datetime

data = pd.read_csv(‘OutOrder.csv‘,encoding=‘gb2312‘)

def toDT(a):
    return datetime.datetime.strptime(a,‘%m/%d/%Y %H:%M‘)   # 注意时序字符串处理

# 转换str成datetime格式
a = data[u‘时间‘].apply(toDT)         # <-------显示使用datetime处理时间字符串
# a = pd.to_datetime(data[u‘时间‘])    # <-------pandas内置处理时间字符串方法,和上面等价
print(a)

# X用来存月份,Y用来存金额,Z用来存人数
X=[];Y=[];Z=[]

for i in range(12):
    start_time = datetime.datetime(2015, i+1, 1)
    if i + 2 > 12:
        end_time = datetime.datetime(2016, 1, 1)
    else:
        end_time = datetime.datetime(2015, i+2, 1)
    idx = np.where((a>start_time)&(a<end_time))     # np.where返回含有一个数组的单元素索引元组:(array数组,),所以加[0]
    if len(idx[0])>0:
        X.append(i + 1)
        Y.append(sum(data[‘金额‘].values[idx[0]]))
        Z.append(len(idx[0]))

width = 0.25

fig, ax1 = plt.subplots()
ax1.bar(np.array(X)-width, Y, width, facecolor=‘#9999ff‘, edgecolor=‘white‘)
ax1.set_ylabel(‘money‘, color=‘b‘)
ax1.set_xlabel(‘month‘)

# ax1.bar(np.array(X)+1, Z, width, facecolor=‘#ff9999‘, edgecolor=‘white‘) # 普通的伴生图绘制方法

ax2 = ax1.twinx()              # <-------伴生图绘制方法(使用同样的横坐标,但是不共用纵轴)
ax2.bar(X, Z, width, facecolor=‘#ff9999‘, edgecolor=‘white‘)
ax2.set_ylabel(‘people num‘, color=‘r‘)

plt.grid(True)
plt.show()

输出图像:

不使用双纵坐标轴的输出图:

时间: 2024-10-27 08:20:16

『python』科学计算专项_科学绘图库matplotlib学习(下)的相关文章

『python』科学计算专项_科学绘图库matplotlib学习

思想:万物皆对象 作业 第一题: import numpy as np import matplotlib.pyplot as plt x = [1, 2, 3, 1] y = [1, 3, 0, 1] def plot_picture(x, y): plt.plot(x, y, color='r', linewidth='2', linestyle='--', marker='D', label='one') plt.xticks(list(range(-5,5,1))) plt.yticks

『python』科学计算专项_科学绘图库matplotlib学习之绘制动画(待续)

示例代码 简单调用绘图 from matplotlib import pyplot as plt import matplotlib.animation as animation import numpy as np def update_point(num): fig_points.set_data(data[:, 0:num]) return fig_points, fig1 = plt.figure() num_point = 50 data = np.random.rand(2, num

Python:2D绘图库matplotlib学习总结

本文为学习笔记----总结!大部分为demo,一部分为学习中遇到的问题总结,包括怎么设置标签为中文等.matlab博大精深,需要用的时候再继续吧. Pyplot tutorial Demo地址为:点击打开链接 一个简单的例子: # -*- coding: utf-8 -*- import matplotlib.pyplot as plt plt.plot([1, 4, 9, 16]) plt.ylabel('some numbers') plt.show() 运行结果为: 我只指定了一组list

『理论』科学计算专项_协方差

一.统计学的基本概念 统计学里最基本的概念就是样本的均值.方差.标准差.首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述: 均值: 标准差: 方差: 均值描述的是样本集合的中间点,它告诉我们的信息是有限的,而标准差给我们描述的是样本集合的各个样本点到均值的距离之平均. 以这两个集合为例,[0, 8, 12, 20]和[8, 9, 11, 12],两个集合的均值都是10,但显然两个集合的差别是很大的,计算两者的标准差,前者是8.3后者是1.8,显然后者较为集中,故其标准差小一些,标

『理论』科学计算专项_线性代数几何原理剖析

矩阵左乘向量的两种理解 1,矩阵左乘向量可以理解为对向量进行线性变换 探究原理的话,可以理解左乘为对整个空间(基&目标向量)进行线性变换,其中, 变换矩阵是基'在基的坐标的列向量组合 目标向量是向量在基中的坐标 结果向量是向量'在基下的坐标 就结果来看,实质是利用向量在基下的坐标和基'在基下的坐标,求出整个空间旋转到基'位置后向量的新位置(向量')在原基下的坐标. 详细说明如下: 把基画出来的原因是因为矩阵变换的其实是基. 举例子来看看,比如旋转(旋转矩阵 ): 2.矩阵左乘向量可以理解为单纯的

『Python』MachineLearning机器学习入门_极小的机器学习应用

一个小知识: 有意思的是,scipy囊括了numpy的命名空间,也就是说所有np.func都可以通过sp.func等价调用. 简介: 本部分对一个互联网公司的流量进行拟合处理,学习最基本的机器学习应用. 导入包&路径设置: import os import scipy as sp import matplotlib.pyplot as plt data_dir = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..

『Python』MachineLearning机器学习入门_效率对比

效率对比: 老生常谈了,不过这次用了个新的模块, 运行时间测试模块timeti: 1 import timeit 2 3 normal = timeit.timeit('sum(x*x for x in range(1000))', number=10000) 4 native_np = timeit.timeit('sum(na*na)', # 重复部分 5 setup="import numpy as np; na = np.arange(1000)", # setup只运行一次

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

『TensorFlow』函数查询列表_神经网络相关

神经网络(Neural Network) 激活函数(Activation Functions) 操作 描述 tf.nn.relu(features, name=None) 整流函数:max(features, 0) tf.nn.relu6(features, name=None) 以6为阈值的整流函数:min(max(features, 0), 6) tf.nn.elu(features, name=None) elu函数,exp(features) - 1 if < 0,否则featuresE