How to create dummy data with various data types in python?

I am trying to create a logical data set to do some analysis and possible data predictions.

Assumed variables are as follows:

 VARIABLES                     RANGES
 awb                           random number eg:235533
 destination_city              random cities
 product                       different products
 product_category              different categories
 origin_city                   random metro cities
 logistics_provider_id         id eg:1,20,28,27
 dispatch_date                 datetime between mar01-2015 to mar15-2015
 final_delivery_status         created,delivered,returned
 actual_delivery_date          datetime between mar16-2015 to mar30-2015
 promised_delivery_date        datetime between mar25-2015 to Apr6-2015

So, from the above variables, it is assumed that I want to create dummy data in the specified ranges. How can I create dummy data using python

Expected output:

example_dummy_data:

  awb        destination_city   product               product_category
1 104842891  Byatarayanapura    Wrangler Denim Jeans  Men Clothing
2 104842938  Bareilly           Sky Blue Denim        Men Clothing
3 104842942  Saharanpur         puma shoes            Men Footwear
4 104842943  Saharanpur         classic puma shoes    Men Foorwear
5 104843066  Mumbai             Elegant black belt    Fashion Accessories

  origin_city  log_prov_id   dispatch date          final_del_status
1 Gurgaon      18            2014-09-02 00:26:11       DEL
2 Bangalore    19            2014-09-01 23:34:30       RTN
3 New Delhi    18            2014-09-01 18:59:41       RTC
4 New Delhi    15            2014-09-02 00:05:33       DEL
5 Hyderabad    16            2014-09-01 22:09:14       UDL

  Actual_del_date        promised_del_date
1 2014-09-03 00:00:00   2014-09-05 20:00:00
2 2014-09-04 00:00:00   2014-09-06 20:00:00
3 2014-09-04 00:00:00   2014-09-06 20:00:00
4 2014-09-04 00:00:00   2014-09-07 20:00:00
5 2014-09-02 00:00:00   2014-09-06 20:00:00

I want to create data with 10,000 rows like above, is there a better way to create in the ranges above

Tried:

import random
a = [int(10000*random.random()) for i in xrange(10000)]

Determined how to create random numbers, but not in the ranges and cities that I want. So please help me how to create dummy data, as I mentioned with 10,000 rows in the ranges that I mentioned.

+4
source share
2 answers

faker . , , , , .

import pandas
from faker import Factory
import random

faker = Factory.create()
status = 'created,delivered,returned'.split(',')

def date_between(d1, d2):
    f = '%b%d-%Y'
    return faker.date_time_between_dates(datetime.strptime(d1, f), datetime.strptime(d2, f))

def fakerecord():
    return {'awb': faker.numerify('######'),  # random number eg:235533
            'destination_city': faker.city(),  # random cities
            'product': 'random_product',  # different products
            'product_category': 'random_category',  # different categories
            'origin_city': faker.city(),  # random metro cities
            'logistics_provider_id': faker.numerify('##'),  # id eg:1,20,28,27
            'dispatch_date': date_between('mar01-2015', 'mar15-2015'),  # datetime between mar01-2015 to mar15-2015
            'final_delivery_status': random.choice(status),  # created,delivered,returned
            'actual_delivery_date': date_between('mar16-2015', 'mar30-2015'),  # datetime between mar16-2015 to mar30-2015
            'promised_delivery_date': date_between('mar25-2015', 'apr06-2015'),  # datetime between mar25-2015 to Apr6-2015
            }

example_dummy_data = pandas.DataFrame([fakerecord() for _ in range(1000)])
+3

, , , . , , , , 10000 , .

:

from random import randint

xs = randint(0, 1000)  # random int between 0 and 1000

:

from random import choice

cities = ["Brisbane", "Sydney", "Melbourne"]

random_ciy = choice(cities)  # A randomly selected city from cities

: ( )

from random import randrange
from datetime import timedelta

def random_date(start, end):
    """Return a random date between two datetime objects start and end"""

    delta = end - start
    int_delta = (delta.days * 24 * 60 * 60) + delta.seconds
    random_second = randrange(int_delta)

    return start + timedelta(seconds=random_second)

:

>>> random_date(datetime(2015, 06, 1), datetime(2015, 9, 1))
datetime.datetime(2015, 7, 19, 11, 59, 46)

:

, ,

+3

All Articles