I have a dataframe of the following form (for example)
shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method 1,FALSE,0,0,MX, 2,FALSE,1,0,MX, 3,FALSE,0,0,MX, 4,FALSE,22,0,MX, 5,FALSE,0,0,MX, 6,FALSE,0,0,MX, 7,FALSE,5,0,MX, 8,FALSE,0,0,MX, 9,FALSE,4,0,MX, 10,FALSE,2,0,MX, 11,FALSE,0,0,MX, 12,FALSE,13,0,MX, 13,FALSE,0,0,CA, 14,FALSE,0,0,US,
How can I use Pandas to calculate summary statistics of each column (column data types are variable, some columns have no information
And then return the a dataframe of the form:
columnname, max, min, median, is_martian, NA, NA, FALSE
So on and so on
Summarizing DataThe describe() function computes a summary of statistics pertaining to the DataFrame columns. This function gives the mean, std and IQR values. And, function excludes the character columns and given summary about numeric columns.
To calculate summary statistics in Python you need to use the . describe() method under Pandas. The . describe() method works on both numeric data as well as object data such as strings or timestamps.
describe
may give you everything you want otherwise you can perform aggregations using groupby and pass a list of agg functions: http://pandas.pydata.org/pandas-docs/stable/groupby.html#applying-multiple-functions-at-once
In [43]: df.describe() Out[43]: shopper_num is_martian number_of_items count_pineapples count 14.0000 14 14.000000 14 mean 7.5000 0 3.357143 0 std 4.1833 0 6.452276 0 min 1.0000 False 0.000000 0 25% 4.2500 0 0.000000 0 50% 7.5000 0 0.000000 0 75% 10.7500 0 3.500000 0 max 14.0000 False 22.000000 0 [8 rows x 4 columns]
Note that some columns cannot be summarised as there is no logical way to summarise them, for instance columns containing string data
As you prefer you can transpose the result if you prefer:
In [47]: df.describe().transpose() Out[47]: count mean std min 25% 50% 75% max shopper_num 14 7.5 4.1833 1 4.25 7.5 10.75 14 is_martian 14 0 0 False 0 0 0 False number_of_items 14 3.357143 6.452276 0 0 0 3.5 22 count_pineapples 14 0 0 0 0 0 0 0 [4 rows x 8 columns]
Now there is the pandas_profiling
package, which is a more complete alternative to df.describe()
.
If your pandas dataframe is df
, the below will return a complete analysis including some warnings about missing values, skewness, etc. It presents histograms and correlation plots as well.
import pandas_profiling pandas_profiling.ProfileReport(df)
See the example notebook detailing the usage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With