pandas · Lesson 1.4
Inspecting data
The first five minutes with any new dataset: types, missing values, distinct values and counts.
Practice data: Netflix files
Made up for teaching, not real Netflix data. Read a file with pd.read_csv("plans.csv"). Disclaimer
plans.csv (3 rows): plan_id, plan_name, monthly_price
ratings.csv (1,981 rows): user_id, title_id, rating, rated_at
subscriptions.csv (621 rows): subscription_id, user_id, plan_id, start_date, end_date, cancel_reason
titles.csv (220 rows): title_id, title, type, genres, release_year, duration_min, seasons, maturity_rating, country, date_added, description
users.csv (600 rows): user_id, signup_date, country, age_group, referral_source
watch_sessions.csv (6,421 rows): session_id, user_id, title_id, device, start_ts, minutes_watched
1Column types
.dtypes shows each column's type: int64 and float64 for numbers, str for text, bool for True/False. A number column read as str is a sign of messy data.
import pandas as pd
users = pd.read_csv("users.csv")
users.dtypesPractice
Read titles.csv and store its column types (.dtypes) in result.
import pandas as pd
titles = pd.read_csv("titles.csv")
result = ...2Missing values per column
.isna().sum() counts the missing values in every column at once. Run it on every new dataset.
import pandas as pd
users = pd.read_csv("users.csv")
users.isna().sum()Practice
Store the number of missing values in each column of titles.csv in result (a Series).
import pandas as pd
titles = pd.read_csv("titles.csv")
result = ...3Counting values
.value_counts() counts how often each value appears, most common first. Add normalize=True to get shares instead of counts.
import pandas as pd
users = pd.read_csv("users.csv")
users["age_group"].value_counts()Practice
Store the share of users in each country in result, rounded to 3 decimals.
import pandas as pd
users = pd.read_csv("users.csv")
result = ...4Distinct values
.unique() lists the distinct values and .nunique() counts them. Missing values aren't counted by .nunique() unless you ask.
import pandas as pd
users = pd.read_csv("users.csv")
print(users["referral_source"].unique())
print(users["referral_source"].nunique(), users["referral_source"].nunique(dropna=False))Practice
Store the number of distinct values in every column of watch_sessions.csv in result.
import pandas as pd
sessions = pd.read_csv("watch_sessions.csv")
result = ...Quick check
A column of prices shows the type str after read_csv. What's the most likely reason?