##note the dataset in consideration has been generated using standard python libraries like randomdatetimenumpypandasand so on this dataset has been generated using utility function called generate_sample_data(available in the code repository for this book the data has been randomly generated and is for representational purposes only the dataset describes transactions having the following attributes/features/propertiesdatethe date of the transaction pricethe price of the product purchased product idproduct identification number quantity purchasedthe quantity of product purchased in this transaction serial nothe transaction serial number user ididentification number for user performing the transaction user typethe type of user let' now begin our wrangling/munging process and understand various methods/tricks to cleantransformand map our dataset to bring it into useable form the first and the foremost step usually is to get quick peak into the number of records/rowsthe number of columns/attributescolumn/attribute namesand their data types for the majority of this section and subsequent oneswe will be relying on pandas and its utilities to perform the required tasks the following snippet provides the details on row countsattribute countsand details print("number of rows::",df shape[ ]print("number of columns::",df shape[ print("column names::",df columns values tolist()print("column data types::\ ",df dtypesthe required information is available straight from the pandas dataframe itself the shape attribute is two-value tuple representing the row count and column countrespectively the column names are available through the columns attributeswhile the dtypes attribute provides us with the data type of each of the columns in the dataset the following is the output generated by this snippet number of rows: number of columns: column names:['date''price''product id''quantity purchased''serial no''user id''user type'column data types:date object price float