Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
94,43 KB
Nội dung
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN MÔN XỬ LÍ DỮ LIỆU LỚN GIỮA KÌ Người hướng dẫn: BÙI THANH HÙNG Người thực hiện: NGUYỄN VĂN TÀI – 518H0050 Lớp : 18H50203 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022 download by : skknchat@gmail.com : 22 TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CƠNG NGHỆ THƠNG TIN MƠN XỬ LÍ DỮ LIỆU LỚN GIỮA KÌ Người hướng dẫn: BÙI THANH HÙNG Người thực hiện: NGUYỄN VĂN TÀI – 518H0050 Lớp : 18H50203 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022 download by : skknchat@gmail.com : 22 download by : skknchat@gmail.com i LỜI CẢM ƠN Để hoàn thành tiểu luận này, em xin gửi lời cảm ơn chân thành đến: Các thầy cô khoa Công nghệ thông tin cung cấp kiến thức tảng để áp dụng nghiên cứu thông tin tiểu luận Em xin bày tỏ lòng biết ơn sâu sắc đến thầy Bùi Thanh Hùng người trực tiếp giảng dạy hướng dẫn tạo điều kiện thuận lợi giúp đỡ em trình thực đề tài Tuy có nhiều cố gắng, chắn tiểu luận em cịn có vài điểm sai sót Rất mong nhận nhận xét, ý kiến đóng góp, phê bình từ phía Thầy để tiểu luận hoàn thiện Xin chân thành cám ơn! download by : skknchat@gmail.com ii LỜI CAM ĐOAN Tôi xin cam đoan sản phẩm đồ án riêng hướng dẫn Bui Thanh Hung Các kết đề tài trung thực chưa công bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngồi ra, tiểu luận cịn sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận tơi xin hoàn toàn chịu trách nhiệm nội dung đồ án Trường đại học Tơn Đức Thắng khơng liên quan đến vi phạm tác quyền, quyền tơi gây q trình thực (nếu có) TP Hồ Chí Minh, ngày 31 tháng 03 năm 2022 Tác giả (ký tên ghi rõ họ tên) Nguyễn Văn Tài download by : skknchat@gmail.com iii PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) Phần đánh giá GV chấm _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) download by : skknchat@gmail.com iv download by : skknchat@gmail.com v TÓM TẮT download by : skknchat@gmail.com MỤC LỤC LỜI CẢM ƠN .i LỜI CAM ĐOAN ii PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN iii TÓM TẮT iv MỤC LỤC DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ .3 CHƯƠNG I - THU THẬP DỮ LIỆU Viết code cào liệu từ trang Web, lưu kết vào file tương ứng mô tả ngắn gọn cấu trúc trang Web 1.1 1.2 Với liệu bạn 2.1 biến 'result’, hi 2.2 với class "au 2.3 tác giả in mà 2.4 giả dòng tiếng từ trang w CHƯƠNG II - KHAI PHÁ DỮ LIỆU Xử lý liệu- D download by : skknchat@gmail.com 1.1 Giớ 1.2 Mộ cách điền? 1.3 Bạn tác giả? Khám phá liệu- Data Exploration 2.1 Giớ 2.2 Thố 2.3 Thố 2.4 Thố 2.5 Thố 2.6 Phâ tiếng 2.7 Phâ Suy luận 3.1 Bạn độ tương đồng phong cách nói tác giả theo y 3.2 Hãy trưng bạn trích xuất đánh giá liệu đ Train/Test độ đo phù hợp? download by : skknchat@gmail.com for i in range(len(authors)): print('+++++++++++++++++++++++') print('Tên tác giả: ', authors[i]) print('Đường link tác giả: ', links[i]) print('Ngày tháng năm sinh: ', bDate[i]) print('Câu nói tiếng: ', quotes[i]) 2.4 Hãy lưu kết câu c vào file Quote.csv tương ứng, với tác giả dòng liệu Bạn yêu cầu thu thập 40 câu nói tiếng từ trang web cách tự động theo code ý trên? data = {'Tacgia': authors, 'Link': links, 'Namsinh': bDate, 'Quote': quotes} df = pd.DataFrame(data) df.to_csv('Quote.csv', index=False) download by : skknchat@gmail.com CHƯƠNG II - KHAI PHÁ DỮ LIỆU Xử lý liệu- Data Imputation 1.1 Giới thiệu: Missing Data gì? Missing data liệu bị thiếu, hiển thị NaN, Nat, Null, N/A,… Missing Data xuất nhiều nguyên nhân như: Người dùng quên điền Dữ liệu bị q trình chuyển thủ cơng từ sở liệu cũ Lỗi chương trình Thiếu liệu trùng hợp Missing Data phân thành loại: Missing at Random (dữ liệu khuyết ngẫu nhiên) Missing Completely at Random (dữ liệu thiếu hoàn toàn ngẫu nhiên) Missing Not at Random (dữ liệu khuyết không ngẫu nhiên) 1.2 Một số giá trị liệu Trường ngày sinh chưa có, bạn đề xuất cách điền? Thực tế liệu cào trường năm sinh khơng có liệu Nhưng giả định vài trường hợp bị null xử lý sau: Bước : Khởi tạo liệu null # initialize null df df_null = df.copy() df_null.loc[df_null.Tacgia == 'Albert Einstein', 'Namsinh'] = np.nan df_null Bước : Xử lý liệu null cách giảm số lượng cột dataframe xảy việc liệu => không phù hợp download by : skknchat@gmail.com 10 # handle # dropna(): missing datas aren't neccessary or taking up a smail part of the dataframe df_null.dropna().reset_index(drop=True) # reduce the number of rows in dataframe => Lost other datas => unsuitable Bước : Trong trường hợp không sử dụng cột “Namsinh”, giải pháp bỏ cột “Namsinh” Nhưng khơng tính tuổi khơng có kiện năm sinh => không phù hợp # incase we don't need to use column "Namsinh", the solution is to drop this column df_null.drop('Namsinh', axis=1) # can't calculate age without birthdate => unsuitable Bước : Loại bỏ liệu khơng liên quan có ảnh hưởng đến liệu khác Nhưng khơng tính tuổi tác giả => không phù hợp # fillna(): missing datas aren't necessary, but effect other datas df_null.fillna(0) # can't calculate age too => unsuitable Bước : Dùng phương pháp ffill : lấy giá trị dòng chèn xuống dịng Nếu dịng bị null khơng thể thay => không phù hợp df_null.fillna(method='ffill') # the first value is still null => unsuitable Bước : Dùng phương pháp bfill : lấy giá trị dòng chèn lên dịng Nếu dịng bị null khơng thể thay => không phù hợp df_null.fillna(method='bfill') # if the last value is null, it will be null forever => unsuitable download by : skknchat@gmail.com 11 Bước : Lấy giá trị xuất nhiều mảng thay chỗ cịn lại Do điền tất trường dataframe mà khơng bị bỏ sót ô => phù hợp df_null.fillna(df_null.mode().iloc[0]) # fill missing value with the most frequent value => suitable 1.3 Bạn thêm vào Trường Tuoi (Tuổi) đề xuất cách điền tuổi tác giả? from datetime import date, datetime def calculateAge(birthDate): today = date.today() age = today.year - birthDate.year - ((today.month, today.day) < (birthDate.month, birthDate.day)) return age def str2date(str): return datetime.strptime(str, '%B %d, %Y').date() ages = [] for bDate in df.iloc[:, 2]: ages.append(calculateAge(str2date(bDate))) df['Tuoi'] = ages df.head() Khám phá liệu- Data Exploration 2.1 Giới thiệu Pandas thư viện Python cung cấp cấu trúc liệu nhanh, mạnh mẽ, linh hoạt mang hàm ý Tên thư viện bắt nguồn từ panel data (bảng liệu) Pandas thiết kế để làm việc dễ dàng trực quan với liệu có cấu trúc (dạng bảng, đa chiều, có tiềm khơng đồng nhất) liệu chuỗi thời gian download by : skknchat@gmail.com 12 Mục tiêu pandas trở thành khối (building block) cấp cao cho công việc thực tế, phân tích liệu giới thực Python, rộng trở thành công cụ thao tác / phân tích mã nguồn mở mạnh mẽ linh hoạt có sẵn loại ngơn ngữ lập trình Pandas phù hợp với nhiều loại liệu khác nhau: Dữ liệu dạng bảng với cột nhập không đồng nhất, bảng SQL bảng tính Excel Dữ liệu chuỗi thời gian theo thứ tự khơng có thứ tự (khơng thiết phải có tần số cố định) Dữ liệu ma trận tùy ý (được nhập đồng không đồng nhất) với nhãn hàng cột Bất kỳ hình thức khác liệu quan sát / thống kê Dữ liệu thực không cần phải dán nhãn vào cấu trúc liệu pandas Pandas xây dựng dựa NumPy Hai cấu trúc liệu pandas Series (1 chiều) DataFrame (2 chiều) xử lý phần lớn trường hợp điển hình tài chính, thống kê, khoa học xã hội nhiều lĩnh vực kỹ thuật Dưới số chức pandas sử dụng phổ biến : reset_index sort_values groupBy download by : skknchat@gmail.com 13 replace head setdefault loc & iloc strptime dropna 10 fillna head() Khi bạn lần nhận liệu mới, bạn muốn nhanh chóng khám phá có cảm giác nội dung Pandas có số phương pháp cho việc Đầu tiên đầu, trả vài hàng DataFrame Chức đầu sử dụng để xem vài hàng liệu sort_values() Điều bạn làm thay đổi thứ tự hàng cách xếp chúng cho liệu thú vị nằm đầu DataFrame Bạn xếp hàng phương pháp sort_values, qua tên cột mà bạn muốn xếp theo reset_index() Nếu bạn muốn chuyển đổi cột liệu làm mục nó, thực thơng qua set_index Trong ví dụ đây, id hành khách đặt làm cột mục Điều hữu ích bạn muốn đặt cột làm mục loc & iloc Với loc iloc, bạn thực hầu hết thao tác lựa chọn liệu DataFrames loc dựa nhãn, có nghĩa bạn phải định hàng cột dựa nhãn hàng cột chúng iloc dựa số số nguyên, bạn phải định download by : skknchat@gmail.com 14 hàng cột theo số số nguyên chúng loc iloc cho phép bạn chọn hàng cột từ DataFrame groupBy() Pandas groupBy() hàm sử dụng để chia liệu thành nhóm cách sử dụng số tiêu chí xác định trước Trong ví dụ đây, chúng tơi tính thu nhập trung bình ứng cử viên cách nhóm theo độ tuổi replace() Hàm replace() trả chuỗi ban đầu sau thay chuỗi cũ chuỗi setdefault() Phương thức setdefault() tương tự get(), thiết lập dict[key]=default key không tồn dict strptime() Chuyển kiễu liệu string sang date dropna() Xoá cột chứa liệu rỗng fillna() Điền giá trị NA / NaN phương pháp xác định download by : skknchat@gmail.com 15 2.2 Thống kê tác giả câu nói tiếng có liệu Cách tiếp cận: Nhóm dataframe theo tác giả Đếm số lần xuất tác giả (tương ứng với số câu nói tác giả đó) df.groupby('Tacgia').size().reset_index(name='So cau noi') 2.3 Thống kê năm sinh độ tuổi tác giả Cách tiếp cận: Nhóm dataframe theo tác giả Hiển thị trường tuổi năm sinh theo tác giả Sắp xếp theo thứ tự tăng dần tuổi df.groupby('Tacgia').first()[['Namsinh', 'Tuoi']].sort_values('Tuoi', ascending=True) 2.4 Thống kê câu nói tiếng như: câu dài nhất, ngắn nhất, số từ Cách tiếp cận: Đếm số từ câu nói Sắp xếp theo thứ tự giảm dần số từ Lấy câu có số từ nhiều số từ df['Length'] = [len(quote.split()) for quote in df.Quote] quoteByLength = df[['Quote', 'Length']].sort_values('Length', ascending=False).reset_index(drop=True) download by : skknchat@gmail.com 16 print('Câu ngắn nhất:', quoteByLength[quoteByLength.Length == min(quoteByLength.Length)]) print('Câu dài nhất', quoteByLength[quoteByLength.Length == max(quoteByLength.Length)]) quoteByLength 2.5 Thống kê từ sử dụng câu nói Cách tiếp cận: Gộp câu nói lại với (string + string) Đếm tần suất từ sau gộp Tạo dataframe chứa từ tần suất vừa tính record = '' for quote in df.Quote: record += ' ' + quote from collections import Counter dictionary = Counter(record.replace('“', '').replace('”', '').replace('.', '').replace(',', '').split()) words = [key for key in dictionary] frequency = [dictionary[key] for key in dictionary] words_frequency = pd.DataFrame({'Words': words, 'Frequency': frequency}) words_frequency 2.6 Phân tích, trực quan mối quan hệ giữa tác giả câu nói tiếng Cách tiếp cận: Bổ sung trường tags cho dataframe Tạo kiểu liệu dictionary chứa tác giả (key) tags tác giả (value) download by : skknchat@gmail.com 17 Tạo dataframe chứa tác giả tags vừa tìm df['Tags'] = tags dictionary = {} for au in df.Tacgia: dictionary.setdefault(au, 0) dictionary[au] = ', '.join([tag for tag in df[df.Tacgia == au].Tags]) authors = [key for key in dictionary] tags = [dictionary[key] for key in dictionary] aus_tags = pd.DataFrame({'Author': authors, 'Tags': tags}) aus_tags Cách tiếp cận: Tạo dataframe với trường quote tags dataframe gốc quote_tags = df[['Quote', 'Tags']] quote_tags Cách tiếp cận: Tạo dataframe với trường quote tags dataframe gốc So sánh tag quote với tags tác giả Nếu tag quote tồn tags tác giả đếm Cộng tất lại chia cho số tag quote * 100 tỉ lệ mối quan hệ quote tác giả ( % quote thuộc tác giả) dictionary = {} for i in range(len(aus_tags.Tags)): dictionary.setdefault(aus_tags.Author[i], 0) dictionary[aus_tags.Author[i]] = [int(sum([1 for tag in group_tags.split(', ') if tag in aus_tags.Tags[i]])/len(group_tags.split(', '))*100) for group_tags in quote_tags.Tags] percents = [dictionary[key] for key in dictionary] authors = [key for key in dictionary] dictionary = {} for j in range(len(percents[0])): download by : skknchat@gmail.com ... .3 CHƯƠNG I - THU THẬP DỮ LIỆU Viết code cào liệu từ trang Web, lưu kết vào file tương ứng mô tả ngắn gọn cấu trúc trang Web 1. 1 1. 2 Với liệu bạn 2 .1 biến 'result’, hi 2.2 với... I - THU THẬP DỮ LIỆU Viết code cào liệu từ trang Web, lưu kết vào file tương ứng mô tả ngắn gọn cấu trúc trang Web 1. 1 Code cào liệu from bs4 import BeautifulSoup import urllib.request import... HIỆU VÀ CHỮ VIẾT TẮT download by : skknchat@gmail.com DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ download by : skknchat@gmail.com CHƯƠNG I - THU THẬP DỮ LIỆU Viết code cào liệu từ trang Web, lưu kết