python實用辦公自動化


python之辦公自動化

生成execl表

import pandas as pd

# DataFrame 數據幀 相當於 工作簿中的一個工作表
df = pd.DataFrame({
    'Id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    'Name': ['student_1', 'student_2', 'student_3', 'student_4', 'student_5', 'student_6', 'student_7', 'student_8',
             'student_9', 'student_10', 'student_11', 'student_12', 'student_13', 'student_14', 'student_15'],
    'Score': [21, 26, 47, 55, 66, 45, 46, 78, 89, 98, 87, 77, 44, 45, 78]
})

# 自定義索引
df = df.set_index('Id')
print(df)
df.to_excel(r'F:\pythonProject2\static\people.xlsx')
print('done!')

讀取execl表

path = 'F:/pythonProject2/static/people.xlsx'
people = pd.read_excel(path, sheet_name='Sheet1', )
print(people)
print('***********************************')
# 跳過前1行
people = pd.read_excel(path, sheet_name='Sheet1', header=1)
print(people)
print('***********************************')
# 指定id為索引,去除默認的索引
people = pd.read_excel(path, sheet_name='Sheet1', index_col='Id', )
print(people.head(2))
print('***********************************')

matplotlib繪圖

import pandas as pd
import matplotlib.pylab as plt

Students = pd.read_excel(r'F:\pythonProject2\static\people.xlsx')
Students.sort_values(by='Score', inplace=True, ascending=False)

plt.bar(Students['Name'], Students.Score, color='orange')

# 添加中文支持
from matplotlib.font_manager import FontProperties

# 引入字體
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=16)
plt.title('學生分數', fontproperties=font)
plt.xlabel('名字', fontproperties=font, fontsize=14)
plt.ylabel('分數', fontproperties=font, fontsize=14)
plt.xticks(Students.Name, rotation='90')
plt.tight_layout()
plt.show()

1

繪制疊加柱狀圖

import pandas as pd
import matplotlib.pylab as plt

users = pd.read_excel(r'F:\pythonProject2\static\data.xlsx')

# 新計算出一個總量,用於排序‘
users['Total'] = users['Jan'] + users['Feb'] + users['Mar']
# 排序
users.sort_values(by='Total', inplace=True)
# 水平的疊加柱狀圖, barh 中的 h表示 horizontal 水平的
# 錘子的疊加主張圖, bar
# 利用 stacked 就可以實現疊加形式
users.plot.bar(x='Name', y=['Jan', 'Feb', 'Mar'], stacked=True)
plt.tight_layout()
plt.show()

python操作word

from docx import Document
from docx.shared import Inches # 定義插入圖像的英寸

document = Document()
# 新增段落
p2 = document.add_paragraph('這是個段落')
# 在p2段落前插入一個段落
p1 = p2.insert_paragraph_before('第一個段落')
# 新增標題,level有1-9種規格
# level=0,新增的標題會有帶下划線樣式
document.add_heading('這是標題', level=1)
# 新增分頁符 -- 后面添加的內容會在新的一頁中
document.add_page_break()
# 新增表格 -- 因為前面有分頁符,所有這里的內容在新的一頁中
table = document.add_table(rows=6, cols=6)
# 第一行第三列
cell = table.cell(0, 2)
cell.text = '第一行第三列'
row = table.rows[1]
row.cells[0].text = '第二行第一列'
row.cells[1].text = '第二行第二列'

document.add_picture('default.png', width=Inches(1.25))
document.save('new.docx')

生成工作報告簡單案例

# -*- coding:utf-8 -*-
# @File  :practice.py
# @Author:yx yao
# @Date  :2020/10/19  15:19
# @Desc  :

import pandas as pd
import matplotlib.pyplot as plt
from docx import Document

imgname = 'data.jpg'

students = pd.read_excel('F:\pythonProject2\static\people.xlsx')

students.sort_values(by='Score', inplace=True, ascending=False)

# 繪制柱狀圖
plt.bar(students.Name, students.Score, color='orange')
plt.title('Student Score', fontsize=10)
plt.xlabel('Name')
plt.ylabel('Score')
# 旋轉x軸標簽
plt.xticks(students.Name, rotation='90')
# 緊湊顯示
plt.tight_layout()
# 保存圖片
plt.savefig(imgname)

document = Document()

document.add_heading('數據分析報告', level=0)
# 調整排序后的索引
first_student = students.iloc[0,:]['Name']
first_score = students.iloc[0,:]['Score']

p = document.add_paragraph(f'總共有{len(students.Name)}名學生參加了考試,學生考試的總體情況!')

table = document.add_table(rows=len(students.Name)+1, cols=2)
# 設置表格樣式
table.style = 'LightShading-Accent1'

table.cell(0, 0).text = '學生姓名'
table.cell(0, 1).text = '學生分數'

for i, (index, row) in enumerate(students.iterrows()):
    table.cell(i+1, 0).text = str(row['Name'])
    table.cell(i+1, 1).text = str(row['Score'])
document.add_picture(imgname)
document.save('Student.docx')
print('Done!')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM