Aman seumur hidup saat bekerja dengan data — (buat) lembar contekan Python sendiri
Sebagai seorang pengembang, waktu adalah sumber daya Anda yang paling berharga. Untuk meningkatkan produktivitas Anda, disarankan untuk memiliki lembar contekan sendiri dengan cuplikan kode. Masalahnya adalah mengelola lembar contekan Anda sendiri membutuhkan waktu, tenaga, dan disiplin tertentu. Menulis lembar contekan dengan gaya “cepat & kotor” akan segera mengakibatkan kekacauan, menurunkan motivasi Anda untuk lebih mempertahankannya, dan tidak meningkatkan produktivitas Anda dalam jangka panjang. Untuk menghindari kekacauan, Anda harus meluangkan waktu untuk membuat cuplikan kode dapat dibaca, dimengerti, dipelihara, dapat digunakan, diurutkan, dan mudah diakses dari awal. Namun masalah awal muncul lagi. Ini menghabiskan waktu dan tenaga.
Bagaimana cara menyelesaikan persamaan ini?
- Jangan menulis/menyimpan cuplikan di Github, Google Drive, atau di proyek terpisah. Sebaliknya, tulis dan publikasikan di Medium. Mengapa? Saat menerbitkan artikel di Medium, Anda (secara alami) akan menghindari “cepat & kotor” dan sebagai gantinya (secara otomatis) mencoba membuat cuplikan dan penjelasannya dapat dibaca, dimengerti, dapat digunakan, dan seterusnya.
- Ini masih membutuhkan waktu dan usaha Anda, namun sementara itu, Anda akan menjadi “penerbit”, berkontribusi kepada komunitas dan menjaga reputasi Anda sebagai pengembang dan (bahkan mungkin mendapatkan uang tambahan). Anda akan lebih termotivasi untuk mendokumentasikan pekerjaan Anda.
- Jangan menunda pengumpulan cuplikan Anda. Saya menyarankan Anda untuk "menulis cerita" tentang topik yang Anda kerjakan dan cukup salin-tempel cuplikan kode (penting) di sana, jika memungkinkan pada hari yang sama. Tidak perlu langsung mempublikasikannya, untuk permulaan cukup menyimpannya disana. Publikasikan segera setelah Anda memiliki cukup konten untuk dijadikan artikel.
Mari kita terapkan rekomendasi ini
Tahun ini saya bekerja di waktu luang saya pada proyek pribadi berskala kecil di mana saya mengumpulkan data dari situs web, membersihkannya, menganalisis teks untuk kata kunci, dan mengumpulkan data. Kemudian saya memulai proyek kedua, di mana saya juga harus bekerja dengan data dan di mana saya menghadapi beberapa masalah serupa yang telah saya selesaikan di proyek pertama. Cuplikan kode berikut yang saya kumpulkan dari kedua proyek tersebut.
Daftar isi
- Membaca string dari file CSV ke dalam daftar Python
- Menambahkan karakter pada setiap elemen dalam daftar
- Ratakan daftar daftar dengan Python
- Menghapus duplikat dari daftar
- Menambahkan beberapa daftar terurut dan terkait dalam satu file CSV
- Penyiapan cepat Selenium untuk chrome dengan sakelar tanpa kepala
- Menemukan kata kunci dalam sebuah teks
- Menemukan kata kunci di Pandas DataFrames
Membaca string dari file CSV ke dalam daftar Python
Asumsikan Anda memiliki file “sites.txt” di direktori bernama “situs web”.
www.dw.com/de www.spiegel.de/ www.nzz.ch/ www.aljazeera.com/ www.jpost.com/
Untuk kode berikut membacanya dalam daftar Python:
def parse_strings_from_txt_in_list(filename_of_txt): with open(filename_of_txt) as f: lines = [line.rstrip() for line in f] return lines if __name__ == '__main__': links = parse_strings_from_txt_in_list("websites/sites.txt") print(links) # output ['www.dw.com/de', 'www.spiegel.de/', 'www.nzz.ch/', 'www.aljazeera.com/', 'www.jpost.com/'] # if you don't apply rstrip() the output will contain "\n". ['www.dw.com/de\n', 'www.spiegel.de/\n', 'www.nzz.ch/\n', 'www.aljazeera.com/\n', 'www.jpost.com/\n'] # https://www.w3schools.com/python/ref_string_rstrip.asp
Menambahkan karakter pada setiap elemen dalam daftar
Asumsikan Anda ingin membuat permintaan pengambilan atau mengikis situs web tersebut. Prasyaratnya adalah memiliki “https://” di setiap awal string. Kode berikut akan mencapainya:
... def add_chars_to_strings_in_list(list_of_str, chars_to_add): return [''.join((chars_to_add, link)) for link in list_of_str] if __name__ == '__main__': links = parse_strings_from_txt_in_list("websites/sites.txt") links_2 = add_chars_to_strings_in_list(links, 'https://') print(links_2) # output ['https://www.dw.com/de', 'https://www.spiegel.de/', 'https://www.nzz.ch/', 'https://www.aljazeera.com/', 'https://www.jpost.com/']
Ratakan daftar daftar dengan Python
Seringkali Anda masuk ke situasi di mana Anda memiliki daftar daftar. Bagi saya, situasi ini sering terjadi ketika saya menggores situs web dan sub-situsnya dan mencari kata kunci tertentu. Kode berikut membantu saya membuat daftar datar:
def make_nested_list_flat(list_of_lists): return [item for sublist in list_of_lists for item in sublist] if __name__ == '__main__': keyword_list_nested = [["Python", "Java", "Kotlin"], ["React", "JavaScript", "Ruby"], ["AWS", "Python", "GO"], ["Python", "AWS", "Flutter"]] keyword_list_flat = make_nested_list_flat(keyword_list_nested) print(keyword_list_flat) # output ['Python', 'Java', 'Kotlin', 'React', 'JavaScript', 'Ruby', 'AWS', 'Python', 'GO', 'Python', 'AWS', 'Flutter']
Menghapus duplikat dari daftar
Anda dapat menerapkan fungsi set() yang dikombinasikan dengan list() untuk menghapus elemen duplikat dalam daftar. Perlu diingat bahwa set() tidak akan mempertahankan urutan asli tetapi dapat mengembalikan kumpulan elemen yang diurutkan secara acak.
... def remove_duplicates_in_list(list_with_duplicates): return list(set(list_with_duplicates)) if __name__ == '__main__': ... keywords_unique = remove_duplicates_in_list(keyword_list_flat) print(keywords_unique) # output ['Flutter', 'Ruby', 'React', 'JavaScript', 'AWS', 'GO', 'Python', 'Java', 'Kotlin'] # to get a sorted list: sorted(list(set(list_with_duplicates)))
Menambahkan beberapa daftar terurut dan terkait dalam satu file CSV
Katakanlah Anda ingin mengambil artikel dari surat kabar dan mendapatkan datanya dalam file CSV yang tertata rapi dengan kolom berikut: “article_title”, “article_subtitle”, “article_content”, “article_date”. Masalah Anda sekarang, ketika menyalin situs web dan artikel berita, Anda menerima empat daftar.
titles = ['title_1', 'title_2', 'title_3'] subtitles = ['subtitle_1', 'subtitle_2', 'subtitle_3'] dates = ['date_1', 'date_2', 'date_3'] contents = ['content_1', 'content_2', 'content_3']
Yang ingin Anda miliki adalah struktur CSV berikut:
'title', 'subtitle', 'date', 'content' 'title_1', 'subtitle_1', 'date_1', 'content_1' 'title_2', 'subtitle_2', 'date_2', 'content_2' 'title_3', 'subtitle_3', 'date_3', 'content_3'
Kode berikut akan mencapai hal ini:
import pandas as pd from datetime import date def create_news_df(titles, subtitles, dates, contents): return pd.DataFrame(list(zip(titles, subtitles, dates, contents)),columns=['title', 'subtitle', 'date', 'content']) if __name__ == '__main__': titles = ['title_1', 'title_2', 'title_3'] subtitles = ['subtitle_1', 'subtitle_2', 'subtitle_3'] dates = ['date_1', 'date_2', 'date_3'] contents = ['content_1', 'content_2', 'content_3'] news_df = create_news_df(titles, subtitles, dates, contents) print(news_df) # output title subtitle date content 0 title_1 subtitle_1 date_1 content_1 1 title_2 subtitle_2 date_2 content_2 2 title_3 subtitle_3 date_3 content_3
Untuk membuat file CSV Anda dapat menggunakan metode Pandas to_csv() :
news_df.to_csv("NewsData/" + str(date.today()) + "news.csv", index=False)
Penyiapan cepat Selenium untuk chrome dengan sakelar tanpa kepala
Selenium adalah perpustakaan yang sangat berguna untuk otomatisasi pengujian, otomatisasi browser, dan web scraping. Berikut dua variasi yang saya suka gunakan. Yang pertama mengharuskan Anda mengunduh chromedriver.exe. Biasanya saya membuat folder proyek bernama “driver” dan meletakkan file chromedriver.exe di sana.
# after doing pip install selenium from selenium import webdriver def create_chome_webdriver_instance(): headless_mode = True options = webdriver.ChromeOptions() options.add_argument('--no-sandbox') options.add_argument('--disable-blink-features=AutomationControlled') if headless_mode: options.add_argument('--headless') else: pass driver = webdriver.Chrome('driver/chromedriver', options=options) return driver if __name__ == '__main__': driver = create_chome_webdriver_instance() driver.get("https://www.google.com")
Cara kedua hampir sama, bedanya mendownload file chromedriver.exe secara otomatis dan menyimpannya di cache. Anda harus menginstal webdriver-manager dan memanggil ChromeDriverManager().install()
# after doing pip install webdriver-manager from webdriver_manager.chrome import ChromeDriverManager ... def create_chome_webdriver_instance(): headless_mode = True driver = ChromeDriverManager().install() ...
Menemukan kata kunci dalam sebuah teks
Tugas yang umum adalah memeriksa teks untuk kata kunci tertentu dan mengekstrak kecocokannya. Saya suka menggunakan “flashtext” (https://flashtext.readthedocs.io/en/latest/) untuk tugas ini. Pustaka ini mudah digunakan dan dibandingkan dengan pustaka NLP tertentu, mudah untuk ditambahkan ke kode Anda yang sudah ada. Apalagi algoritmanya sangat cepat. Kode di bawah ini menunjukkan implementasinya:
# after doing pip install flashtext from flashtext import KeywordProcessor def load_keywords_in_processor(keywords): keyword_processor = KeywordProcessor() for keyword in keywords: keyword_processor.add_keyword(keyword) return keyword_processor if __name__ == '__main__': text_1 = "Lorem Impsum AWS and PYTHON" keywords = ['AWS', 'PYTHON', 'JAVA', 'REACT', 'PHP', 'CSS'] keyword_processor = load_keywords_in_processor(keywords) found_keywords = keyword_processor.extract_keywords(text_1) print(found_keywords) # Output ['AWS', 'PYTHON']
Menemukan kata kunci di Pandas DataFrames
Mampu menemukan kata kunci dalam sebuah teks itu bagus. Namun, bagaimana jika Anda perlu menganalisis banyak teks dan ingin menyimpannya dalam file CSV dengan kolom terpisah untuk semua kata kunci yang ditemukan? Caranya adalah dengan membuat Pandas Dataframe, dimana setiap teks berada pada barisnya masing-masing. Kemudian Anda dapat menggunakan metode Pandas apply() yang dikombinasikan dengan KeywordProcessor di setiap baris. Berikut ini contohnya:
import pandas as pd from flashtext import KeywordProcessor from pandas import DataFrame ... if __name__ == '__main__': text_1 = "Lorem Impsum AWS and PYTHON" text_2 = "Lorem Impsum AWS and JAVA" text_3 = "Lorem Impsum CSS and REACT" list_of_texts = [text_1, text_2, text_3] keywords = ['AWS', 'PYTHON', 'JAVA', 'REACT', 'PHP', 'CSS'] texts_df = DataFrame(list_of_texts, columns=['text']) print(texts_df) # each text is now a separate row inside the dataframe """ text 0 Lorem Impsum AWS and PYTHON 1 Lorem Impsum AWS and JAVA 2 Lorem Impsum CSS and REACT """ # now we can apply the extract_keywords method on each row keyword_processor = load_keywords_in_processor(keywords) texts_df["keyword"] = texts_df['text'].apply(keyword_processor.extract_keywords) print(texts_df) # output """ text keywords 0 Lorem Impsum AWS and PYTHON [AWS, PYTHON] 1 Lorem Impsum AWS and JAVA [AWS, JAVA] 2 Lorem Impsum CSS and REACT [CSS, REACT] """
Semoga cuplikan ini bermanfaat bagi Anda. Saya berjanji untuk memperluas blog ini dengan cuplikan yang lebih bermanfaat. Itu saja untuk saat ini. Selamat membuat kode!