python pandas+matplotlib X轴设为时间序列

本文介绍了一种使用Python进行数据分析的方法,通过读取Excel文件中的研磨组制程检查记录,根据指定日期范围筛选数据,并生成XBar-R控制图,最终保存为PDF文档。涉及的技术包括Pandas、Matplotlib、NumPy等,适用于质量控制和过程改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding=utf-8
#Program python3.6

import pandas as pd                             # 数据分析
import os                                       # 操作系统OS
import matplotlib.pyplot as plt                 # 可视化图表
import numpy as np                              # 科学计算
from dateutil.parser import parse               # 日期时间
import  warnings                                # 警报处理
warnings.filterwarnings("ignore", module="matplotlib") # 忽略matplotlib警告信息

print('程序功能:根据起止日期,收集研磨组制程检查记录数据,D:\文件夹下生成XBar-R图pdf文档')

mydate = '2019-11-1,2019-11-30'
date_low = parse(mydate.split(',')[0])
date_upper = parse(mydate.split(',')[1])
drawing = '1101-1070276'

xls = pd.ExcelFile(r'd:\python\研磨各工序首末件.xlsm')                              # 读取excel数据
source = pd.read_excel(xls,sheet_name='target',header=None,engine='c',index=None)  ##drawings = source[0].drop_duplicates(inplace=True)   删除重复值
source.drop([1,3,4,5,6,8],axis=1,inplace=True)                  # 删除不需要的列
source.drop(source[source[0]!=drawing].index,inplace=True)      # 删除A列不等于drawing所在行
source.dropna(how='any')                                        # 删除空值
source.drop(source[source[7] == '检查频率/时间'].index,inplace=True) # 清除“检查频率/时间”所在行
source = source[(source.iloc[:,1]>=date_low) & (source.iloc[:,1]<=date_upper)]  # 按日期截取数据
gp = source.groupby(by=[7],sort = True)                         # 按检查内容分组
length = len(gp)                                                # 检查内容项目数量  #source.set_index([2],inplace=True,drop=False)
i=0
fig,ax = plt.subplots(nrows=length,ncols=1,sharex=True,figsize=(11.5,8.2))         # 定义子图数量,共用X轴坐标
ax[0].set_title('{} Xbar-R控制图'.format(drawing),fontsize=18)  # 定义标题

for k,v in gp:
    ar = []
    v[2] = v[2].dt.strftime('%m-%d')
    v.set_index([2],inplace=True)

    for x in v.values:   # 这里用法很有问题
        ar.extend(x[2:])

    ax[i].plot(ar,linestyle='--',linewidth=1.1,marker='.',markersize=6)
    ax[i].get_yaxis().get_major_formatter().set_useOffset(False)   # 纵轴刻度由科学计数法改为标准数学法
    ax[i].set_xlabel(k.replace('\n',''),weight='normal',fontsize=12)
    ax[i].grid(True,alpha=0.6)
    i=i+1

plt.rcParams['font.sans-serif'] = ['SimHei']                    # 中文支持  #plt.rcParams['font.size']=8
plt.tight_layout()
plt.subplots_adjust(left=0.06, bottom=0.07, right=0.97,top=0.94,hspace=0.2, wspace=0.15)  ## 调整边距,子图间距
plt.savefig(r'd:\python\{}.pdf'.format(drawing))                # 存为pdf文档
plt.show()                                                      # 图形显示

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值