课程篇一《怎么用python来统计小助手工作量》

举报
yxmos2019 发表于 2019/12/19 14:54:28 2019/12/19
【摘要】 统计前,我们先做点有意义的事,比如画个画吧!怎么让机器可以像个艺术大师一样!## 载入所需库import cv2import timeimport matplotlib.pyplot as pltimport numpy as npimport urllib.request%matplotlib inlinedef style_transfer(pathOut='', ...

统计前,我们先做点有意义的事,比如画个画吧!怎么让机器可以像个艺术大师一样!

##################################
# 更新Anaconda
conda update conda

# 更新所有包
conda update --all

##################################

# 添加清华源,清华源不行,改中科大吧
# 执行以下命令
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/

conda config --set show_channel_urls yes

# Ubuntu Anaconda 使用改文件的方式添加清华源
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

##################################
## 载入所需库
import cv2
import time
import matplotlib.pyplot as plt
import numpy as np
import urllib.request
%matplotlib inline
def style_transfer(pathOut='',
                   model='',
                   width=None,
                   jpg_quality=80):
    ## 读入原始图片
    req = urllib.request.urlopen('http://blog.yxmos.com/bag1.jpg')
    arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
    img = cv2.imdecode(arr, -1) 
    (h, w) = img.shape[:2]
    if width is not None:
        img = cv2.resize(img, (width, round(width * h / w)), interpolation=cv2.INTER_CUBIC)
        (h, w) = img.shape[:2]
    ## 加载预训练模型
    print('加载预训练模型......')
    net = cv2.dnn.readNetFromTorch(model)
    ## 前馈网络计算
    blob = cv2.dnn.blobFromImage(img, 1.0, (w, h), (103.939, 116.779, 123.680), swapRB=False, crop=False)
    net.setInput(blob)
    start = time.time()
    output = net.forward()
    end = time.time()
    
    print('风格迁移用时:%s秒'%(end - start))
    ## 输出结果
    output = output.reshape((3, output.shape[2], output.shape[3]))
    output[0] += 103.939
    output[1] += 116.779
    output[2] += 123.680
    output = output.transpose(1, 2, 0)
    cv2.imwrite(pathOut, output, [int(cv2.IMWRITE_JPEG_QUALITY), jpg_quality])
    outputImg = cv2.imread(pathOut)
    
    plt.figure(figsize=(15,15))
    plt.subplot(131)
    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    plt.subplot(132)
    imgStyle = cv2.imread('../data/muse.jpg')
    plt.imshow(cv2.cvtColor(imgStyle, cv2.COLOR_BGR2RGB))
    plt.subplot(133)
    plt.imshow(cv2.cvtColor(outputImg, cv2.COLOR_BGR2RGB))
    plt.show()
pathOut = '../../tmp/result_img01.jpg'
model = '../data/the_muse.t7'
style_transfer(pathOut, model, width=500)

image.png

可爱的小助手负责给学员们答疑,从早忙到晚。怎么让公司的同事们直观感知到这个“从早忙到晚”的工作状态呢?

好了,到这里,Python就帮上了大忙,我们从微信群里提取了一段时间内各各学员提问记录,存成了如下结构的文件:

image.png

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 读取文件
df = pd.read_csv("../data/ask_time.csv")
# 将秒转换成每天24小时制时间
df['time'] = df['createdTime'].astype(int) % 86400 // 3600
# 时区转换
df['time'] = (df['time'] + 8) % 24
# 按从0点到23点显示
results_df = df['time'].value_counts().sort_index()
results_df.plot.bar()
plt.show()

image.png

这结果是一张柱状图,横坐标是每天的时间,从0点到23点,纵坐标是问题回答量。

看吧,从早上9点上班开始,一直到半夜23点,甚至0点,小助手一直都辛勤劳动着,铁证如山。


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。