【Python】【實戰】對 excel 某列進行統計,並按出現頻率排序

前言

工作中想對 excel 進行一個簡單的統計,歷時三個小時終於搞定,效果如下:
在這裏插入圖片描述

1. 源代碼

話不多說,直接上源碼,可以直接食用,只需將目標文件設置爲你需要統計的文件即可。

# -*- coding:utf-8 -*-
import xlrd
from collections import Counter

infos = []
# 目標文件
report = '2019.xlsx'

info_file = xlrd.open_workbook(report)
info_sheet = info_file.sheets()[1]
row_count = info_sheet.nrows

for row in range(0, row_count):
    # 5 爲要統計的列序號,注意從 0 開始
	infos.append(info_sheet.cell_value(row, 5))

def all_list(arr):
    result = {}

    for i in set(arr):
        result[i] = arr.count(i)
    return result

d = all_list(infos)
d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)
print(d2)

2. 模塊解析

接下來對每個模塊進行解說。

2.1 文件打開

# 目標文件
report = '2019.xlsx'
info_file = xlrd.open_workbook(report)
info_sheet = info_file.sheets()[1]

第一步自然要打開文件,這裏需要引用 xlrd 庫。

第一行定義目標文件,第二行打開,第三行選擇表。注意:表的序號從 0 開始:
在這裏插入圖片描述
如圖,“Sheet1” 對應的是 info_sheet = info_file.sheets()[0]
而 “sheet2” 對應 info_sheet = info_file.sheets()[1]

2.2 數據讀取

infos = []
for row in range(0, row_count):
	infos.append(info_sheet.cell_value(row, 5))

定義一個 list ,用來存儲讀取的數據。

然後以列數爲界限,利用 for 循環將每行你需要的列數據進行存儲。

2.3 頻率統計

def all_list(arr):
    result = {}

    for i in set(arr):
        result[i] = arr.count(i)
    return result

定義一個 dict ,將剛剛得到的 list 進行唯一處理, 然後將每個數據進行統計。這裏 dict 的 key - value 分別對應 “ 數據 - 頻率 ”。

2.4 按頻排序

d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)

將剛剛得到的 dict 按照 value 值的大小進行倒序排序。

正序排序只需將代碼改爲:d2 = sorted(d.items(), key = lambda x:x[1], reverse = True)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章