sách gpt4 ăn đã đi

Ví dụ giải thích về cách triển khai thực tế của python về đọc, thống kê và viết excel

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 32 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này về cách triển khai thực tế các ví dụ đọc, thống kê và viết excel này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

lý lịch.

Một hội nghị trong nước về lĩnh vực hình ảnh sắp được tổ chức. Cần phải gửi nhiều email mời khác nhau, sau đó nhập và đếm các email phản hồi (có tham dự hội nghị hay không, v.v.). Giáo viên đã giao cho tôi một nhiệm vụ quan trọng như vậy. ps: Khi đếm email trả lời có thể biết được ai đang họp, ai không.

Nhiệm vụ chính của tôi ngoài việc nhập email phản hồi là đếm số lượng tham dự của các giám đốc và thành viên bình thường (những người đã tham dự, những người không tham dự và những người không trả lời). Không có cách nào để nhập thông tin trả lời email mà phải thao tác thủ công, nhưng nếu việc thống kê cũng phải thực hiện thủ công thì khối lượng công việc sẽ quá nhiều (ví dụ tìm kiếm trong danh sách hàng trăm người để xem có hàng trăm người khác cùng tham gia không). danh sách này!!), nên tôi đã nghĩ ra để dùng python trợ giúp, tôi đã dành hai ngày liên tục để chỉnh sửa và viết 6 phiên bản. . .

bản tóm tắt.

version_1 về cơ bản thực hiện các chức năng đọc, thống kê và hiển thị excel, nhưng có nhiều vấn đề như sao chép và dán vào bảng excel sau khi hiển thị và có các lỗi như nan trong bộ.

So với phiên bản_1, phiên bản_2 sử dụng bộ thay vì danh sách, có thể tự động loại bỏ các bản sao.

Version_3 giải quyết được lỗi nan trong set, đồng thời bổ sung thêm chức năng ghi vào excel nhưng mỗi lần chỉ ghi được 1 bảng nên phải chạy 2 lần mới ghi được 2 sheet.

Điểm cải tiến của version_4 là tích hợp thao tác ghi hai bảng trong phiên bản_3 vào một chương trình. Nó chỉ cần chạy một lần để ghi hai bảng, nhưng nó sẽ luôn ghi hai bảng trong trường hợp bạn chỉ muốn viết một bảng. bàn? ?

Cải tiến lớn nhất của version_5 so với phiên bản trước là module hóa chương trình và dễ đọc hơn; phương pháp sửa nan trong bộ cũng đã được cải tiến và đơn giản hóa và bạn có thể thoải mái kiểm soát số lượng bảng được ghi;

So với phiên bản_5, phiên bản_final đã sửa một lỗi trước đây, nhưng hiện tại nó tổng quát hơn (chức năng chuẩn bị thay thế chức năng set2list).

phiên bản_1 。

Về cơ bản nó thực hiện được các chức năng đọc, đếm và hiển thị dữ liệu excel nhưng cũng có nhiều vấn đề, ví dụ sau khi hiển thị phải copy và dán vào bảng excel, có những giá trị như nan trong bảng. bộ.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#phiên_bản_1
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop\\0711Task')
in(os.getcwd())
dữ liệu = pd.read_excel('for_python.xlsx','Sheet2')
return_set = set(dữ liệu['danh sách biên nhận'])
Demand_set = set(data['danh sách giám đốc'])
danh sách câu trả lời = []
unanswer_list = []
cho mỗi mục trong demand_set:
  nếu mỗi trong return_set:
  answer_list.append(mỗi)
  khác:
  unanswer_list.append(mỗi)
notattend_set = set(dữ liệu['danh sách biên nhận'][-15:])
nt = []
cho mỗi mục trong notattend_set:
  nếu mỗi câu trong answer_list:
  nt.append(mỗi)
def disp(ll, cap, num = Đúng):
  in(viết hoa)
  nếu số:
  đối với i, mỗi trong enumerate(ll):
   in(i+1,mỗi)
  khác:
  đối với mỗi trong enumerate(ll):
   in(mỗi)
disp(answer_list,'\nDanh sách trả lời của Giám đốc')
disp(unanswer_list,'\nDanh sách các giám đốc chưa được trả lời')
disp(nt,'\nĐạo diễn trả lời rằng ông ấy sẽ không tham gia danh sách')

phiên bản_2 。

So với phiên bản trước, phiên bản này sử dụng set thay vì list, có thể tự động loại bỏ các bản sao.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#phiên_bản_2
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop\\0711Task')
in(os.getcwd())
dữ liệu = pd.read_excel('for_python.xlsx','Sheet2')
return_set = set(dữ liệu['danh sách biên nhận'])
Demand_set = set(data['danh sách giám đốc'])
answer_set = set([]) #Danh sách trả lời của Giám đốc
unanswer_set = set([]) #Director danh sách chưa được trả lời
cho mỗi mục trong demand_set:
  nếu mỗi trong return_set:
  answer_set.add(mỗi)
  khác:
  unanswer_set.add(mỗi)
notattend_set = set(data['danh sách biên nhận'][-17:])
nt = set([]) #Biên nhận của giám đốc cho biết ông sẽ không tham gia danh sách
cho mỗi mục trong notattend_set:
  nếu mỗi trong answer_set:
  nt.add(mỗi)
ans_att_set=answer_set - nt #Danh sách tham gia biên nhận của Giám đốc
def disp(ss, cap, num = False):
  in(viết hoa)
  nếu số:
  đối với i, mỗi trong enumerate(ss):
   in(i+1,mỗi)
  khác:
  cho mỗi trong ss:
   in(mỗi)
#disp(answer_set,'\nDanh sách trả lời của Giám đốc')
disp(ans_att_set,'\nĐạo diễn trả lời là danh sách người tham gia')
disp(nt,'\nĐạo diễn trả lời rằng ông ấy sẽ không tham gia danh sách')
disp(unanswer_set,'\nDanh sách các giám đốc chưa được trả lời')
print(len(ans_att_set),len(nt),len(unanswer_set))

phiên bản_3 。

Bản này giải quyết được lỗi nan trong set, đồng thời bổ sung thêm chức năng ghi vào excel nhưng mỗi lần chỉ ghi được 1 bảng nên phải chạy 2 lần mới ghi được 2 sheet.

bước_1 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop')
in('work_directory: ', os.getcwd())
data = pd.read_excel('Danh sách giám đốc và thành viên.xlsx','Danh sách giám đốc và thành viên')
#1. Tải excel và nhận ba danh sách
ans_attend_set = set(data['Biên nhận tham dự']) #Biên nhận tham dự danh sách cuộc họp
N = len(ans_attend_set)
ans_notatt_idx = [i cho i trong phạm vi(N) if type(data['receipt không tham gia'][i]) == np.float][0]
ans_notatt_set = set(data['Biên nhận không tham gia'][:ans_notatt_idx])#Danh sách biên nhận không tham gia
concil_idx = [i for i in range(N) if type(data['list ofdirectors'][i]) == np.float][0]
concil_set = set(data['danh sách giám đốc'][:concil_idx]) #Danh sách giám đốc
#2.Thống kê về việc tham dự cuộc họp hội đồng quản trị
concil_attend_set = set([]) #Giám đốc nhận danh sách điểm danh
concil_notatt_set = set([]) #Giám đốc nhận danh sách vắng mặt
concil_notans_set = set([]) #Danh sách giám đốc chưa nhận được biên nhận
cho mỗi phần tử trong concil_set:
  nếu mỗi cái trong ans_attend_set:
  concil_attend_set.add(mỗi)
  elif mỗi cái trong ans_notatt_set:
  concil_notatt_set.add(mỗi)
  khác:
  Council_notes_set.add(mỗi)
#3. Hiển thị kết quả
def disp(ss, cap, num = Đúng):
  #ss: tập hợp danh sách
  #cap: phần mô tả bắt đầu
  in(cap,'({})'.format(len(ss)))
  đối với i trong phạm vi (np.ceil (len (ss) / 5). astype (int)):
  trước = i * 5
  tiếp theo = (i+1) * 5
  #Điều chỉnh định dạng hiển thị
  đ = ''
  cho mỗi mục trong danh sách(ss)[pre:nex]:
   nếu len(each) == 2:
   dd = dd + ' ' + mỗi
   Elif len(mỗi) == 3:
   dd = dd + ' ' + mỗi
   khác:
   dd = dd + '' + mỗi
  in('{:3.0f} -{:3.0f} {}'. định dạng(i*5+1,(i+1)*5,dd))
disp(concil_attend_set,'\nCác giám đốc tham gia')
disp(concil_notatt_set,'\nKhông tham dự cuộc họp')
disp(concil_notans_set,'\nKhông trả lời giám đốc')
#4. Viết trạng thái tham gia của giám đốc vào excel
df = pd.DataFrame(list(concil_attend_set),columns = ['Giám đốc tham gia'])
df['']=pd.DataFrame([''])
df['số sê-ri 1'] = pd.DataFrame(np.arange(len(concil_notatt_set))+1)
df['Không tham dự cuộc họp'] = pd.DataFrame(list(concil_notatt_set))
df['_']=pd.DataFrame([''])
df['序号2'] = pd.DataFrame(np.arange(len(concil_notans_set))+1)
df['Concil_notans_set'] = pd.DataFrame(list(concil_notans_set))
df.index = df.index + 1
df.to_excel('Thống kê biên nhận của giám đốc và thành viên.xlsx', sheet_name='Thống kê biên nhận của giám đốc')
print('\n\nGhi vào excel thành công~~')

bước_2 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop')
in('work_directory: ', os.getcwd())
data = pd.read_excel('Danh sách giám đốc và thành viên.xlsx','Danh sách giám đốc và thành viên')
#1. Tải excel và nhận ba danh sách
ans_attend_set = set(data['Biên nhận tham dự']) #Biên nhận tham dự danh sách cuộc họp
N = len(ans_attend_set)
ans_notatt_idx = [i cho i trong phạm vi(N) if type(data['receipt không tham gia'][i]) == np.float][0]
ans_notatt_set = set(data['Biên nhận không tham gia'][:ans_notatt_idx])#Danh sách biên nhận không tham gia
mem_idx = [i cho i trong phạm vi(N) if type(data['recommending people'][i]) == np.float][0]
mem_set = set(data['recommowned user'][:mem_idx]) #Danh sách đại diện thành viên được đề xuất
#2. Thống kê số lượng thành viên tham dự
mem_attend_set = set([]) #Biên lai cho thành viên tham gia
mem_notatt_set = set([]) #Biên nhận cho thành viên không tham gia
mem_notans_set = set([]) #Không phải là thành viên biên nhận
cho mỗi phần tử trong mem_set:
  nếu mỗi cái trong ans_attend_set:
  mem_attend_set.add(mỗi)
  elif mỗi cái trong ans_notatt_set:
  mem_notatt_set.add(mỗi)
  khác:
  mem_notes_set.add(mỗi)
#3. Hiển thị kết quả
def disp(ss, cap, num = Đúng):
  #ss: tập hợp danh sách
  #cap: phần mô tả bắt đầu
  in(cap,'({})'.format(len(ss)))
  đối với i trong phạm vi (np.ceil (len (ss) / 5). astype (int)):
  trước = i * 5
  tiếp theo = (i+1) * 5
  #Điều chỉnh định dạng hiển thị
  đ = ''
  cho mỗi mục trong danh sách(ss)[pre:nex]:
   nếu len(each) == 2:
   dd = dd + ' ' + mỗi
   Elif len(mỗi) == 3:
   dd = dd + ' ' + mỗi
   khác:
   dd = dd + '' + mỗi
  in('{:3.0f} -{:3.0f} {}'. định dạng(i*5+1,(i+1)*5,dd))
disp(mem_attend_set,'\nThành viên tham gia')
disp(mem_notatt_set,'\nKhông phải là thành viên')
disp(mem_notans_set,'\nKhông có thành viên trả lời')
#4. Ghi trạng thái tham gia của thành viên vào excel
nếu len(mem_attend_set) > len(mem_noting_set):
  in('#1')
  L = len(bộ_ghi_vào_bộ_ghi_vào)
  mem_notes_list = danh sách(mem_notes_set)
  mem_notans_list.extend([''] * (L - len(mem_notans_set)))
  mem_attend_list = danh sách(mem_attend_set)
khác:
  in('#2')
  L = len(mem_noting_set)
  mem_attend_list = danh sách(mem_attend_set)
  mem_attend_list.extend([''] * (L - chiều dài(mem_attend_set)))
  mem_notes_list = danh sách(mem_notes_set)
df = pd.DataFrame(mem_attend_list, columns = ['Thành viên tham gia'])
df['']=pd.DataFrame([''])
nếu len(mem_notatt_set) == 0:
  df['số sê-ri 1'] = np.NaN
  df['thành viên không tham gia'] = np.NaN
khác:
  df['số sê-ri 1'] = pd.DataFrame(np.arange(len(mem_notatt_set))+1)
  df['thành viên không tham gia'] = pd.DataFrame(list(mem_notatt_set))
df['_']=pd.DataFrame([''])
df['序号2'] = pd.DataFrame(np.arange(len(mem_notans_set))+1)
df['Thành viên không nhận được'] = pd.DataFrame(mem_notans_list)
df.index = df.index + 1
df0 = pd.read_excel('Trả lời thống kê biên nhận của giám đốc và thành viên.xlsx',sheet_name='Thống kê biên nhận của giám đốc')
writer = pd.ExcelWriter('Thống kê biên nhận của Giám đốc và thành viên.xlsx')
df0.to_excel(writer, sheet_name='Thống kê biên nhận của giám đốc')
df.to_excel(writer, sheet_name='Thống kê biên nhận của thành viên')
người viết. lưu()
print('\n\nGhi vào excel thành công~~')

phiên bản_4 。

Điểm cải tiến của version_4 là tích hợp thao tác ghi hai bảng trong phiên bản_3 vào một chương trình. Chỉ cần chạy một lần là có thể ghi hai bảng và hai bảng sẽ được ghi luôn. Câu hỏi đặt ra là nếu bạn chỉ muốn ghi vào một bảng thì sao? ?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop')
in('work_directory: ', os.getcwd())
Loadfile_sheet = ['Danh sách Giám đốc và Thành viên.xlsx','Danh sách Giám đốc và Thành viên']
columns = ['biên nhận tham gia','biên nhận không tham gia','giám đốc','thành viên']
savefile_sheet = ['Thống kê biên nhận của giám đốc và thành viên.xlsx','Thống kê biên nhận của giám đốc','Thống kê biên nhận của thành viên']
hiển thị = [1,1]
def main(loadfile_sheet,columns,savefile_sheet,display):
  #1. Tải excel và lấy danh sách
  dữ liệu = pd.read_excel(loadfile_sheet[0],loadfile_sheet[1])
  định nghĩa first_nan_index(pd):
  đối với i, mỗi trong enumerate(pd):
   nếu type(each) == np.float:
   trở về tôi
  trở về tôi
  idx = first_nan_index(dữ liệu[cột[0]])
  ans_attend_set = set(data[columns[0]][:idx])#Nhận danh sách người tham gia
  idx = first_nan_index(dữ liệu[cột[1]])
  ans_notatt_set = set(data[columns[1]][:idx])#Biên nhận danh sách không tham gia
  idx = first_nan_index(dữ liệu[cột[2]])
  concil_set = set(data[columns[2]][:idx])#Danh sách giám đốc
  idx = first_nan_index(dữ liệu[cột[3]])
  mem_set = set(data[columns[3]][:idx])#Danh sách thành viên
  #2. Đếm số người tham dự các cuộc họp
  concil_attend_set = set([]) #Biên lai tham dự cuộc họp
  concil_notatt_set = set([]) #Biên lai cho giám đốc không tham dự
  concil_notans_set = set([]) #Giám đốc chưa được nhận
  cho mỗi phần tử trong concil_set:
  nếu mỗi cái trong ans_attend_set:
   concil_attend_set.add(mỗi)
  elif mỗi cái trong ans_notatt_set:
   concil_notatt_set.add(mỗi)
  khác:
   Council_notes_set.add(mỗi)
  mem_attend_set = set([]) #Biên lai cho thành viên tham gia
  mem_notatt_set = set([]) #Biên nhận cho thành viên không tham gia
  mem_notans_set = set([]) #Không phải là thành viên biên nhận
  cho mỗi phần tử trong mem_set:
  nếu mỗi cái trong ans_attend_set:
   mem_attend_set.add(mỗi)
  elif mỗi cái trong ans_notatt_set:
   mem_notatt_set.add(mỗi)
  khác:
   mem_notes_set.add(mỗi)
  #3. Có hiển thị kết quả trung gian hay không
  def disp(ss, cap, num = Đúng):
  #ss: tập hợp danh sách
  #cap: phần mô tả bắt đầu
  in(cap,'({})'.format(len(ss)))
  đối với i trong phạm vi (np.ceil (len (ss) / 5). astype (int)):
   trước = i * 5
   tiếp theo = (i+1) * 5
   #Điều chỉnh định dạng hiển thị
   đ = ''
   cho mỗi mục trong danh sách(ss)[pre:nex]:
   nếu len(each) == 2:
    dd = dd + ' ' + mỗi
   Elif len(mỗi) == 3:
    dd = dd + ' ' + mỗi
   khác:
    dd = dd + '' + mỗi
   in('{:3.0f} -{:3.0f} {}'. định dạng(i*5+1,(i+1)*5,dd))
  nếu display[0]:
  disp(concil_attend_set,'\nCác giám đốc tham gia')
  disp(concil_notatt_set,'\nKhông tham dự cuộc họp')
  disp(concil_notans_set,'\nKhông trả lời giám đốc')
  nếu hiển thị[1]:
  disp(mem_attend_set,'\nThành viên tham gia')
  disp(mem_notatt_set,'\nKhông phải là thành viên')
  disp(mem_notans_set,'\nKhông có thành viên trả lời')
  #4. Viết để xuất sắc
  định nghĩa trans_pd(df,ss,cap,i=1):
  nếu len(ss) == 0:
   df['serial number{}'.format(i)] = np.NaN
   df[cap] = np.NaN
  khác:
   df['序号{}'.format(i)] = pd.DataFrame(np.arange(len(ss))+1)
   df[cap] = pd.DataFrame(danh sách(ss))
  df['_'*i]=pd.DataFrame([''])
  trả về df
  def set2list(mem_attend_set, mem_noting_set):
  nếu len(mem_attend_set) > len(mem_noting_set):
   L = len(bộ_ghi_vào_bộ_ghi_vào)
   mem_notes_list = danh sách(mem_notes_set)
   mem_notans_list.extend([''] * (L - len(mem_notans_set)))
   mem_attend_list = danh sách(mem_attend_set)
  khác:
   L = len(mem_noting_set)
   mem_attend_list = danh sách(mem_attend_set)
   mem_attend_list.extend([''] * (L - chiều dài(mem_attend_set)))
   mem_notes_list = danh sách(mem_notes_set)
  trả về mem_attend_list,mem_notans_list
  mem_attend_list, mem_noting_list = set2list(mem_attend_set, mem_noting_set)
  df1 = pd.DataFrame(mem_attend_list, columns = ['Thành viên tham gia'])
  df1['']=pd.DataFrame([''])
  df1 = trans_pd(df1,mem_notatt_set,'thành viên không tham gia')
  df1 = trans_pd(df1,mem_notans_set,'Thành viên không có biên nhận',2)
  df1.index = df1.index + 1
  Council_attend_list, Council_noting_list = set2list(council_attend_set, Council_noting_set)
  df2 = pd.DataFrame(concil_attend_list, columns = ['Giám đốc tham gia'])
  df2['']=pd.DataFrame([''])
  df2 = trans_pd(df2,concil_notatt_set,'không tham dự cuộc họp')
  df2 = trans_pd(df2,concil_notans_list,'Hòa giải không trả lời',2)
  df2.index = df2.index + 1
  người viết = pd.ExcelWriter(savefile_sheet[0])
  df2.to_excel(người viết, tên_trang tính=savefile_sheet[1])
  df1.to_excel(người viết, tên_trang tính=savefile_sheet[2])
  người viết. lưu()
  print('\n\nGhi vào excel thành công~~')
nếu __name__ == '__main__':
  main(loadfile_sheet,columns,savefile_sheet,display)

phiên bản_5 。

Phiên bản_5 cải thiện và đơn giản hóa phương pháp sửa chữa nan trong bộ này; nó cũng mô-đun hóa chương trình và làm cho nó dễ đọc hơn;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop')
in('work_directory: ', os.getcwd())
Loadfile_sheet = ['Danh sách Giám đốc và Thành viên.xlsx','Danh sách Giám đốc và Thành viên']
common_columns = ['Biên nhận tham gia','Biên nhận không tham gia']
quan tâm_columns = ['Giám đốc','Thành viên']
disp_columns = ['Tham gia', 'Không tham gia', 'Không nhận được']
savefile_sheet = ['Thống kê biên nhận của giám đốc và thành viên.xlsx','Thống kê biên nhận của giám đốc','Thống kê biên nhận của thành viên']
def disp(ss, cap, num = Đúng):
  #ss: tập hợp danh sách
  #cap: phần mô tả bắt đầu
  in(cap,'({})'.format(len(ss)))
  đối với i trong phạm vi (np.ceil (len (ss) / 5). astype (int)):
  trước = i * 5
  tiếp theo = (i+1) * 5
  #Điều chỉnh định dạng hiển thị
  đ = ''
  cho mỗi mục trong danh sách(ss)[pre:nex]:
   nếu len(each) == 2:
   dd = dd + ' ' + mỗi
   Elif len(mỗi) == 3:
   dd = dd + ' ' + mỗi
   khác:
   dd = dd + '' + mỗi
  in('{:3.0f} -{:3.0f} {}'. định dạng(i*5+1,(i+1)*5,dd))
định nghĩa trans_pd(df,ss,cap,i=1):
  df['_'*i]=pd.DataFrame([''])
  nếu len(ss) == 0:
  df['serial number{}'.format(i)] = np.NaN
  df[cap] = np.NaN
  khác:
  df['序号{}'.format(i)] = pd.DataFrame(np.arange(len(ss))+1)
  df[cap] = pd.DataFrame(danh sách(ss))
  trả về df
định nghĩa set2list(ss1,ss2):
  nếu len(ss1) > len(ss2):
  L = chỉ(ss1)
  ss2_list = danh sách(ss2)
  ss2_list.extend([''] * (L - chiều dài(ss2)))
  ss1_list = danh sách(ss1)
  khác:
  L = len(ss2)
  ss1_list = danh sách(ss1)
  ss1_list.extend([''] * (L - chiều dài(ss1)))
  ss2_list = danh sách(ss2)
  trả về ss1_list,ss2_list
def get_df(loadfile_sheet,common_columns,concerned_column,disp_columns, display = True):
  #1. Tải excel
  dữ liệu = pd.read_excel(loadfile_sheet[0],loadfile_sheet[1])
  common_set1 = set(dữ liệu[common_columns[0]])
  common_set1.discard(np.NaN)
  common_set2 = set(dữ liệu[cột_chung[1]])
  common_set2.discard(np.NaN)
  concern_set = set(dữ liệu[concerned_column])
  concern_set.discard(np.NaN)
  #2. Thống kê
  concern_in_set_1 = bộ([])
  concern_in_set_2 = bộ([])
  concern_in_no_set = bộ([])
  cho mỗi phần tử trong concern_set:
  nếu mỗi phần tử trong common_set1:
   concern_in_set_1.add(mỗi)
  elif mỗi cái trong common_set2:
   concern_in_set_2.add(mỗi)
  khác:
   concern_in_no_set.add(mỗi)
  #3. Hiển thị
  nếu hiển thị:
  disp(quan tâm_trong_tập_1,'\n'+disp_columns[0]+quan tâm_cột)
  disp(quan tâm_trong_tập_2,'\n'+disp_columns[1]+quan tâm_cột)
  disp(concerned_in_no_set,'\n'+disp_columns[2]+concerned_column)
  #4. Trả về khung dữ liệu
  concern_in_set_1_list, concern_in_set_2_list = set2list(concerned_in_set_1, concern_in_no_set)
  df = pd.DataFrame(concerned_in_set_1_list,columns = [disp_columns[0]])
  df = trans_pd(df, quan tâm trong tập hợp 2, cột disp[1])
  df = trans_pd(df, quan tâm không có tập hợp, cột disp[2],2)
  df.index = df.index + 1
  trả về df
def save2excel(df, concern_column, savefile_sheet):
  L = len(savefile_sheet) - 1
  số x = 0
  đối với i trong np.arange(L)+1:
  nếu quan tâm_cột trong savefile_sheet[i]:
   idx = tôi
   phá vỡ
  nếu idx != 0: 
  tên = người dân địa phương()
  đối với i trong np.arange(L)+1:
   nếu i != idx:
   tên['df%s' % i] = pd.read_excel(savefile_sheet[0], sheet_name=savefile_sheet[i])
  người viết = pd.ExcelWriter(savefile_sheet[0])
  đối với i trong np.arange(L)+1:
   nếu i != idx:
   tên['df%s' % i].to_excel(người viết, tên_trang tính=savefile_sheet[i])
   khác:
   df.to_excel(writer, tên_trang_bảng=savefile_sheet[i])
  người viết. lưu()
  khác: 
  tên = người dân địa phương()
  đối với i trong np.arange(L)+1:
   tên['df%s' % i] = pd.read_excel(savefile_sheet[0], sheet_name=savefile_sheet[i])
  người viết = pd.ExcelWriter(savefile_sheet[0])
  đối với i trong np.arange(L)+1:
   tên['df%s' % i].to_excel(người viết, tên_trang tính=savefile_sheet[i])
  df.to_excel(người viết, tên_trang_bảng=cột_quan_quan)
  người viết. lưu()
  in('viết thành công')
nếu __name__ == '__main__':
  đối với concern_column trong concern_columns:
  df = get_df(tải_tệp_sheet,cột_chung,
    concern_column,disp_columns, display = Đúng)
  save2excel(df, concern_column, savefile_sheet)

phiên bản_cuối cùng 。

So với phiên bản_5, trước đây cần có một lỗi cần có kiến ​​thức trước đây, nhưng giờ đây lỗi này đã tổng quát hơn (chức năng chuẩn bị thay thế chức năng set2list).

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
nhập khẩu chúng
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
os.chdir('C:\\Users\\dell\\Desktop')
in('work_directory: ', os.getcwd())
Loadfile_sheet = ['Danh sách Giám đốc và Thành viên.xlsx','Danh sách Giám đốc và Thành viên']
common_columns = ['Biên nhận tham gia','Biên nhận không tham gia']
quan tâm_columns = ['Giám đốc','Thành viên']
disp_columns = ['Tham gia', 'Không tham gia', 'Không nhận được']
savefile_sheet = ['Thống kê biên nhận của giám đốc và thành viên.xlsx','Thống kê biên nhận của giám đốc','Thống kê biên nhận của thành viên']
def disp(ss, cap, num = Đúng):
  #Chức năng: hiển thị danh sách
  #ss : tập hợp danh sách
  #cap: phần mô tả bắt đầu
  in(cap,'({})'.format(len(ss)))
  đối với i trong phạm vi (np.ceil (len (ss) / 5). astype (int)):
  trước = i * 5
  tiếp theo = (i+1) * 5
  #Điều chỉnh định dạng hiển thị
  đ = ''
  cho mỗi mục trong danh sách(ss)[pre:nex]:
   nếu len(each) == 2:
   dd = dd + ' ' + mỗi
   Elif len(mỗi) == 3:
   dd = dd + ' ' + mỗi
   khác:
   dd = dd + '' + mỗi
  in('{:3.0f} -{:3.0f} {}'. định dạng(i*5+1,(i+1)*5,dd))
def trans_pd(df,ll,cap,i=1):
  #Function: Tạo ba cột-cột trống, cột số sê-ri, cột dữ liệu
  #df: Cấu trúc DataFrame
  #ll : danh sách
  #cap : Tên cột được hiển thị
  #i: Kiểm soát tên của cột trống
  df['_'*i]=pd.DataFrame([''])
  nếu len(set(ll)) == 1:
  df['serial number{}'.format(i)] = np.NaN
  df[cap] = np.NaN
  khác:
  df['序号{}'.format(i)] = pd.DataFrame(np.arange(len(set(ll))-1)+1)
  df[cap] = pd.DataFrame(ll)
  trả về df
định nghĩa prep(ss, N):
  #Function: tiền xử lý, tạo danh sách và hoàn thành nó với độ dài N
  #ss : tập thể
  #N: Độ dài
  ll = danh sách(ss)
  L = dài(ll)
  ll.extend([np.NaN] * (NL))
  trở về ll
def get_df(loadfile_sheet,common_columns,concerned_column,disp_columns, display = True):
  #1. Tải excel
  dữ liệu = pd.read_excel(loadfile_sheet[0],loadfile_sheet[1])
  common_set1 = set(dữ liệu[common_columns[0]])
  common_set2 = set(dữ liệu[cột_chung[1]])
  concern_set = set(dữ liệu[concerned_column])
  common_set1.discard(np.NaN)
  common_set2.discard(np.NaN)
  concern_set.discard(np.NaN)
  #2. Thống kê
  concern_in_set_1 = bộ([])
  concern_in_set_2 = bộ([])
  concern_in_no_set = bộ([])
  cho mỗi phần tử trong concern_set:
  nếu mỗi phần tử trong common_set1:
   concern_in_set_1.add(mỗi)
  elif mỗi cái trong common_set2:
   concern_in_set_2.add(mỗi)
  khác:
   concern_in_no_set.add(mỗi)
  #3. Hiển thị
  nếu hiển thị:
  disp(quan tâm_trong_tập_1,'\n'+disp_columns[0]+quan tâm_cột)
  disp(quan tâm_trong_tập_2,'\n'+disp_columns[1]+quan tâm_cột)
  disp(concerned_in_no_set,'\n'+disp_columns[2]+concerned_column)
  #4. Trả về khung dữ liệu
  N = np.max([len(quan tâm trong tập hợp 1),len(quan tâm trong tập hợp 2),len(quan tâm trong không có tập hợp)])
  concern_in_set_1_list = prep(concerned_in_set_1,N)
  concern_in_set_2_list = prep(concerned_in_set_2,N)
  concern_in_no_list = prep(concerned_in_no_set,N)
  df = pd.DataFrame(concerned_in_set_1_list,columns = [disp_columns[0]])
  df = trans_pd(df, quan tâm đến danh sách tập hợp 2, cột disp[1])
  df = trans_pd(df, quan tâm đến danh sách không có, cột hiển thị[2],2)
  df.index = df.index + 1
  trả về df
def save2excel(df, concern_column, savefile_sheet):
  L = len(savefile_sheet) - 1
  số x = 0
  đối với i trong np.arange(L)+1:
  nếu quan tâm_cột trong savefile_sheet[i]:
   idx = tôi
   phá vỡ
  if idx != 0: #If có sheet tương ứng 
  tên = người dân địa phương()
  đối với i trong np.arange(L)+1:
   nếu i != idx:
   tên['df%s' % i] = pd.read_excel(savefile_sheet[0], sheet_name=savefile_sheet[i])
  người viết = pd.ExcelWriter(savefile_sheet[0])
  đối với i trong np.arange(L)+1:
   nếu i != idx:
   tên['df%s' % i].to_excel(người viết, tên_trang tính=savefile_sheet[i])
   khác:
   df.to_excel(writer, tên_trang_bảng=savefile_sheet[i])
  người viết. lưu()
  else: #Nếu không có sheet tương ứng, tạo một sheet mới 
  tên = người dân địa phương()
  đối với i trong np.arange(L)+1:
   tên['df%s' % i] = pd.read_excel(savefile_sheet[0], sheet_name=savefile_sheet[i])
  người viết = pd.ExcelWriter(savefile_sheet[0])
  đối với i trong np.arange(L)+1:
   tên['df%s' % i].to_excel(người viết, tên_trang tính=savefile_sheet[i])
  df.to_excel(người viết, tên_trang_bảng=cột_quan_quan)
  người viết. lưu()
  in('viết thành công')
nếu __name__ == '__main__':
  đối với concern_column trong concern_columns:
  df = get_df(tải_tệp_sheet,cột_chung,
    concern_column,disp_columns, display = Đúng)
  save2excel(df, concern_column, savefile_sheet)

Ví dụ giải thích cách thực hiện đọc, thống kê, viết excel bằng Python là toàn bộ nội dung được biên tập viên chia sẻ, hy vọng có thể cho các bạn tham khảo và mong các bạn ủng hộ.

Liên kết gốc: https://blog.csdn.net/StepLeave/article/details/51959798.

Cuối cùng, bài viết này về cách triển khai thực tế đọc, thống kê và viết excel bằng python đã kết thúc tại đây. Nếu bạn muốn biết thêm về cách triển khai thực tế việc đọc, thống kê và viết excel bằng python, bài viết này kết thúc tại đây. , vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress