脚本如何统计图书借阅数据

wen 实用脚本 29

本文目录导读:

脚本如何统计图书借阅数据

  1. 场景一:使用Python统计(最通用,适合复杂分析)
  2. 场景二:使用SQL统计(适合有数据库的系统)
  3. 场景三:使用Shell脚本统计(适合日志文件或简单文本)
  4. 场景四:使用Excel VBA统计(适合嵌入Excel工作簿)
  5. 如何选择合适的方案?
  6. 进阶建议:自动生成报告

要统计图书借阅数据,通常需要根据数据来源(如借阅系统数据库、Excel表格、文本日志等)选择不同的脚本方法,以下是几种常见场景的统计脚本方案,涵盖Python、SQL和Shell脚本。

使用Python统计(最通用,适合复杂分析)

假设你有一个 借阅记录.csv 文件,包含字段:书名, 借书人, 借书日期, 还书日期

统计目标:

  1. 总借阅次数
  2. 最受欢迎的书(借阅次数最多)
  3. 最活跃的借书人
  4. 每月借阅量趋势

Python脚本示例 (stats_books.py):

import pandas as pd
from collections import Counter
# 读取数据
df = pd.read_csv('借阅记录.csv')
# 1. 总借阅次数
print(f"总借阅次数: {len(df)}")
# 2. 最受欢迎的书 Top 10
popular_books = df['书名'].value_counts().head(10)
print("\n最受欢迎的书 Top 10:")
print(popular_books)
# 3. 最活跃的借书人 Top 5
active_users = df['借书人'].value_counts().head(5)
print("\n最活跃的借书人 Top 5:")
print(active_users)
# 4. 每月借阅量统计
df['借书日期'] = pd.to_datetime(df['借书日期'])
df['借阅月份'] = df['借书日期'].dt.to_period('M')
monthly_count = df['借阅月份'].value_counts().sort_index()
print("\n每月借阅量:")
print(monthly_count)
# 5. 当前未还的书(假设还书日期为空表示未还)
if '还书日期' in df.columns:
    not_returned = df[df['还书日期'].isna() | (df['还书日期'] == '')]
    print(f"\n当前未还的书数量: {len(not_returned)}")
    print("未还书详情:")
    print(not_returned[['书名', '借书人', '借书日期']].head(20))

运行方式:

python stats_books.py

使用SQL统计(适合有数据库的系统)

假设数据库表名为 borrow_records,字段同上。

统计目标:

  1. 总借阅次数
  2. 最受欢迎的书
  3. 每月借阅量

SQL查询脚本:

-- 1. 总借阅次数
SELECT COUNT(*) AS total_borrows FROM borrow_records;
-- 2. 最受欢迎的书 Top 10
SELECT book_name, COUNT(*) AS borrow_times
FROM borrow_records
GROUP BY book_name
ORDER BY borrow_times DESC
LIMIT 10;
-- 3. 每月借阅量
SELECT DATE_FORMAT(borrow_date, '%Y-%m') AS month, COUNT(*) AS total
FROM borrow_records
GROUP BY month
ORDER BY month;
-- 4. 当前未还的书(假设return_date为NULL表示未还)
SELECT * FROM borrow_records WHERE return_date IS NULL;

执行方式(命令行):

mysql -u 用户名 -p 数据库名 -e "SELECT ..."

或使用DBeaver、Navicat等客户端工具执行。

使用Shell脚本统计(适合日志文件或简单文本)

假设有一个日志文件 borrow.log,每行格式:书名|借书人|日期

Shell脚本示例 (stats.sh):

#!/bin/bash
LOG_FILE="borrow.log"
echo "=== 借阅数据统计 ==="
# 1. 总借阅次数
total=$(wc -l < "$LOG_FILE")
echo "总借阅次数: $total"
# 2. 最受欢迎的书 Top 5
echo "最受欢迎的书 Top 5:"
cut -d'|' -f1 "$LOG_FILE" | sort | uniq -c | sort -rn | head -5
# 3. 最活跃的借书人 Top 5
echo "最活跃的借书人 Top 5:"
cut -d'|' -f2 "$LOG_FILE" | sort | uniq -c | sort -rn | head -5
# 4. 统计每天借阅量
echo "每天借阅量:"
cut -d'|' -f3 "$LOG_FILE" | sort | uniq -c | sort -k2

运行方式:

chmod +x stats.sh
./stats.sh

使用Excel VBA统计(适合嵌入Excel工作簿)

如果你将数据放在Excel中,可以写VBA宏来自动统计。

VBA代码示例:

  1. Alt + F11 打开VBA编辑器
  2. 插入模块,粘贴以下代码:
Sub 统计借阅数据()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dict As Object
    Dim key As Variant
    Set ws = ThisWorkbook.Sheets("借阅记录")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Set dict = CreateObject("Scripting.Dictionary")
    ' 统计每本书的借阅次数
    For i = 2 To lastRow
        bookName = ws.Cells(i, 1).Value ' 假设书名在A列
        If dict.exists(bookName) Then
            dict(bookName) = dict(bookName) + 1
        Else
            dict.Add bookName, 1
        End If
    Next i
    ' 输出结果到新工作表
    Sheets.Add
    Range("A1").Value = "书名"
    Range("B1").Value = "借阅次数"
    r = 2
    For Each key In dict.Keys
        Cells(r, 1).Value = key
        Cells(r, 2).Value = dict(key)
        r = r + 1
    Next key
    ' 按借阅次数降序排列
    Range("A1:B" & r - 1).Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlYes
    MsgBox "统计完成!结果已输出到新工作表。"
End Sub

如何选择合适的方案?

数据来源 推荐方案 原因
图书馆管理系统数据库 SQL 直接查询,效率高
Excel表格 Python或VBA Python处理大文件,VBA方便嵌入
日志文件(文本) Shell脚本或Python 快速,无需安装额外软件
需要进行可视化/图表 Python + Matplotlib 可直接生成统计图

进阶建议:自动生成报告

如果你需要定期统计,可以考虑将Python脚本设置为定时任务(Windows任务计划程序 / Linux cron),自动将结果保存为Excel或PDF报告。

# 在Python脚本末尾添加导出功能
monthly_count.to_excel('月度借阅统计.xlsx')
print("报告已生成!")

根据你的实际数据格式和统计需求,选择最适合的方案即可,如果需要针对特定数据格式(如JSON、XML)或更复杂的统计逻辑,请补充说明。

抱歉,评论功能暂时关闭!