Menjana data rawak adalah sangat penting dalam bidang sains data. Daripada membina ramalan rangkaian saraf, data pasaran saham, dsb., tarikh biasanya digunakan sebagai salah satu parameter. Kita mungkin perlu menjana nombor rawak antara dua tarikh untuk analisis statistik. Artikel ini akan menunjukkan cara menjana k tarikh rawak antara dua tarikh yang diberikan
Datetime ialah perpustakaan terbina dalam Python untuk masa pemprosesan. Sebaliknya, modul rawak membantu dalam menjana nombor rawak. Jadi kita boleh menggabungkan modul rawak dan masa tarikh untuk menjana tarikh rawak antara dua tarikh.
random.randint(start, end, k)
Rawak di sini merujuk kepada perpustakaan rawak Python. Kaedah randint mengambil tiga parameter penting bermula, tamat dan k (bilangan elemen). Mula dan tamat tentukan julat nombor yang kita perlukan untuk menjana nombor rawak. k mentakrifkan bilangan nombor yang perlu kita hasilkan
Dalam contoh di bawah, kami mencipta fungsi yang dipanggil generate_random_dates yang mengambil sebagai parameter tarikh mula, tarikh tamat dan bilangan tarikh rawak untuk dijana. Untuk k nombor rawak, gunakan modul rawak. Kami menambah nombor ini pada tarikh mula, tetapi dalam julat tarikh tamat.
import random from datetime import timedelta, datetime def generate_random_dates(start_date, end_date, k): random_dates = [] date_range = end_date - start_date for _ in range(k): random_days = random.randint(0, date_range.days) random_date = start_date + timedelta(days=random_days) random_dates.append(random_date) return random_dates start_date = datetime(2023, 5, 25) end_date = datetime(2023, 5, 31) random_dates = generate_random_dates(start_date, end_date, 5) print("The random dates generated are:") for index, date in enumerate(random_dates): print(f"{index+1}. {date.strftime('%Y-%m-%d')}")
The random dates generated are: 1. 2023-05-27 2. 2023-05-26 3. 2023-05-27 4. 2023-05-25 5. 2023-05-29
Fungsi cincang dalam Python menjana rentetan aksara panjang tetap yang dipanggil nilai cincang. Kita boleh menggunakan fungsi cincang untuk memperkenalkan rawak. Fungsi hash menjana nilai yang kelihatan rawak berdasarkan inputnya. Dengan menggunakan operasi modulo pada date_range, nilai cincang yang terhasil dihadkan kepada julat nilai yang mungkin dalam julat tarikh yang dikehendaki.
hash(str(<some value>)) % <range of dates>
Bergantung pada beberapa seni bina asas, fungsi cincang boleh mengambil rentetan dan mengembalikan nilai cincang. % ialah pengendali modulo yang digunakan untuk mengira baki nilai. Ini memastikan bahawa keputusan sentiasa sekurang-kurangnya dalam julat yang dikehendaki.
Dalam kod di bawah, kami mengulang k kali. Kami menggunakan fungsi cincang untuk menjana nilai cincang rentetan. Seterusnya, kami menyekat julat tarikh untuk memastikan data berada dalam tarikh mula dan tamat tertentu. Kami menambahkan tarikh rawak yang dijana pada senarai yang dipanggil random_dates
from datetime import timedelta, datetime def generate_random_dates(start_date, end_date, k): random_dates = [] date_range = (end_date - start_date).days + 1 for _ in range(k): random_days = hash(str(_)) % date_range random_date = start_date + timedelta(days=random_days) random_dates.append(random_date) return random_dates # Example usage start_date = datetime(2023, 5, 25) end_date = datetime(2023, 5, 31) random_dates = generate_random_dates(start_date, end_date, 5) print("The random dates generated are:") for index, date in enumerate(random_dates): print(f"{index+1}. {date.strftime('%Y-%m-%d')}")
The random dates generated are: 1. 2023-05-28 2. 2023-05-28 3. 2023-05-25 4. 2023-05-27 5. 2023-05-28
Numpy dan Pandas ialah perpustakaan Python yang popular untuk pengiraan matematik dan analisis data. Pustaka NumPy mempunyai kaedah rawak yang boleh kita gunakan untuk menjana nombor rawak. Sebaliknya, kita boleh menggunakan pustaka Pandas untuk menjana julat tarikh.
numpy.random.randint(start, end , size=<size of the output array> , dtype=<data type of the elements>, other parameters.....)
Nombor Rawak ialah modul perpustakaan NumPy. Kaedah randint mengambil permulaan dan tamat sebagai parameter yang diperlukan. Ia mentakrifkan julat nombor yang kita perlukan untuk mencari nombor rawak. saiz mentakrifkan saiz tatasusunan output, dan dtype mewakili jenis data elemen.
Dalam kod di bawah, kami telah mencipta fungsi yang dipanggil generate_random_dates yang mengambil tarikh mula, tarikh tamat dan bilangan hari sebagai parameter dan mengembalikan satu siri tarikh rawak dalam bentuk senarai. Kami menggunakan perpustakaan Pandas untuk memulakan tarikh dan perpustakaan Numpy untuk menjana nombor.
import numpy as np import pandas as pd def generate_random_dates(start_date, end_date, k): date_range = (end_date - start_date).days + 1 random_days = np.random.randint(date_range, size=k) random_dates = pd.to_datetime(start_date) + pd.to_timedelta(random_days, unit='d') return random_dates start_date = datetime(2021, 5, 25) end_date = datetime(2021, 5, 31) print("The random dates generated are:") random_dates = generate_random_dates(start_date, end_date, 5) for index,date in enumerate(random_dates): print(f"{index+1}. {date.strftime('%Y-%m-%d')}")
The random dates generated are: 1. 2021-05-26 2. 2021-05-27 3. 2021-05-27 4. 2021-05-25 5. 2021-05-27
Arrow ialah perpustakaan Python. Ini menyediakan cara yang lebih baik dan lebih optimum untuk mengendalikan tarikh dan masa. Kita boleh menggunakan kaedah dapatkan anak panah untuk mendapatkan masa dalam format tarikh dan menggunakan perpustakaan rawak untuk mendapatkan nombor k secara rawak antara tarikh mula dan tarikh tamat.
arrow.get(date_string, format=<format of the date string> , tzinfo=<time zone information>)
Anak panah mewakili modul anak panah Python. date_string mewakili rentetan tarikh dan masa yang perlu kita huraikan. Walau bagaimanapun, ia hendaklah dalam format yang diiktiraf oleh modul anak panah. format mentakrifkan format date_string. tzinfo menyediakan maklumat zon waktu.
Kami telah menggunakan kaedah anak panah dalam kod di bawah untuk menjana tarikh rawak. Kami mentakrifkan fungsi tersuai yang dipanggil generate_random_dates. Kami mengulangi k kali dalam fungsi. Kami menggunakan kaedah bersatu untuk setiap lelaran untuk menjana tarikh rawak. Kami mengalihkan tarikh kepada tarikh rawak supaya tarikh rawak berada dalam julat tersebut. Kami menambahkan tarikh pada senarai random_dates dan mengembalikan nilainya.
import random import arrow def generate_random_dates(start_date, end_date, k): random_dates = [] date_range = (end_date - start_date).days for _ in range(k): random_days = random.uniform(0, date_range) random_date = start_date.shift(days=random_days) random_dates.append(random_date) return random_dates start_date = arrow.get('2023-01-01') end_date = arrow.get('2023-12-31') random_dates = generate_random_dates(start_date, end_date, 7) print("The random dates generated are:") for index,date in enumerate(random_dates): print(f"{index+1}. {date.strftime('%Y-%m-%d')}")
The random dates generated are: 1. 2023-02-05 2. 2023-10-17 3. 2023-10-08 4. 2023-04-18 5. 2023-04-02 6. 2023-08-22 7. 2023-01-01
Dalam artikel ini, kami membincangkan cara menjana tarikh rawak antara dua tarikh yang diberikan menggunakan perpustakaan Python yang berbeza. Menjana tarikh rawak tanpa menggunakan mana-mana perpustakaan terbina dalam adalah tugas yang membosankan. Oleh itu, adalah disyorkan untuk menggunakan perpustakaan dan kaedah untuk melaksanakan tugas ini. Kita boleh menjana tarikh rawak menggunakan datetime, Numpy panda, dsb. Kod ini bukan kaedah dll.
Atas ialah kandungan terperinci Bagaimana untuk menjana tarikh rawak k antara dua tarikh menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!