import numpy as np
import csv
# 引入使用的檔案
def get_alldata(filename):
# 讀取資料檔案,獲取列的標識,並將其與實驗需要的標識進行比對,
# 從而將資料檔案中所需要使用的列的資料提取出來,為之後的處理做鋪墊。
with open(filename, 'r') as csv_file:
col_name_all = csv_file.readline()[:-1]
colname_str = "clothing id,recommended ind,positive feedback count,class name"
col_name_all = col_name_all.split(",")
colname_lst = colname_str.split(",")
colindex_lst =
for i in col_name_all:
if i in colname_lst:
dataset =
dataset1 = csv.reader(csv_file)
for row in dataset1:
adata = list(row[i] for i in colindex_lst)
print(dataset)
return np.array(dataset)
def get_id_count_arr(dataset):
# 通過將每行資料通過鍵值對儲存在字典中,
# 可以比列表的count函式更快的獲取得到想要的資料,
# 也就是出現400次以上的資料。
mdict = {}
id_count_list =
for row in dataset:
if row[0] in mdict:
mdict[row[0]] = mdict[row[0]] + 1
else:
mdict[row[0]] = 0
for k in mdict:
if mdict[k] >= 400:
return np.array(id_count_list)
def cal_recom_num(dataset, id_lst):
# 通過兩個臨時變數記載疊加獲取的資料值,
# 當資料統計完成後,
# 計算的結果也就可以直接得到
id_recom_ratio_lst =
for i in range(len(id_lst)):
mnum = 0
mrnum = 0
for j in range(dataset.shape[0]):
if id_lst[i] == dataset[j][0]:
if dataset[j][1] == '1':
mrnum += 1
mnum += 1
return id_recom_ratio_lst
def cal_pos_num(dataset, id_lst):
# 通之前的方法,資料統計完成後,
# 就可得出結果,
# 並使用了臨時變數來記錄資料。
id_pos_sum_lst = # 每個clothing id進行正反饋次數加和的列表
id_name_lst = # 每個clothing id的型別名稱
strdata = ''
for i in range(len(id_lst)):
sum = 0 # 正反饋次數
for j in range(dataset.shape[0]):
if id_lst[i] == dataset[j][0]:
sum += int(dataset[j][2])
strdata = dataset[j][3]
return id_pos_sum_lst, id_name_lst
if __name__ == "__main__":
# 合理呼叫之前的方法,獲取資料,處理資料,顯示結果
filename = "z:\\womens_clothing_e-commerce_reviews.csv"
dataset = get_alldata(filename)
print("資料集dataset的維度是: {}".format(dataset.shape))
id_count_lst = get_id_count_arr(dataset)
recom_ratio_lst = cal_recom_num(dataset, id_count_lst)
id_pos_sum_lst, id_name_lst = cal_pos_num(dataset, id_count_lst)
id_data_arrs = np.array((id_count_lst, id_name_lst, recom_ratio_lst, id_pos_sum_lst)).t
for id_data in id_data_arrs:
print("clothing id為 {} ,服裝型別為 {},被推薦的佔比為: {},正反饋的總計數為: {}"
.format(id_data[0], id_data[1], id_data[2], id_data[3]))
python基礎筆記(2)
數字求和 num1 int input 輸入第乙個數字 此處必須定義變數型別 num2 int input 輸入第二個數字 sum int num1 int num2 print sum 輸出結果 輸入第乙個數字 1 輸入第二個數字 1 2process finished with exit cod...
Python基礎筆記2
1.使用方法啊sort 對列表永久排序 輸出 3.倒著列印 1.遍歷整個列表 2.for迴圈執行更多的操作 輸入 輸出 4.忘記縮排額外的 行 例如輸入 第二個呼叫函式print 原本需要縮排,但python發現for語句後面有一行 是縮排的,因此沒有報告錯誤。輸出 最總結果是,對於每個列表中的每位...
Python筆記(2) Python基礎
經常可以看到 python 原始碼檔案中第一行經常出現下面這行 usr bin python是用來說明指令碼語言是 python 的,要用 usr bin下面的程式 python 這個直譯器,來解釋 python 指令碼,來執行 python 指令碼的 即指定用什麼直譯器執行指令碼以及直譯器所在的位...