Video summary
GCI World September 2026 Session 3
Main summary
Key takeaways
Main ideas, concepts, and lessons
Course logistics & how to participate
This session is Lesson 3, focused on data cleaning using pandas (Python).
Participants are reminded to:
- Complete attendance surveys and homework by the deadlines.
- Use official resources for “what to do next,” primarily the student handbook.
- Seek help from GCA World staff, colleagues, and office hours (recommended—many assistants are GCI graduates).
Tools used throughout the course (standard workflow)
The standard workflow uses:
- Omni Campus: course registration and assignment submission
- Slack: announcements and peer/assistant Q&A
- Student guide: lecture info and access points
- Google Drive: lecture materials (slides, notebooks, assignments)
Participants are asked to bookmark these and can access via QR code / Slack link.
Community guidance / rules
- No official WhatsApp groups are run by organizers.
- Any WhatsApp groups are member-created, and organizers are not responsible.
Participant setup requirement
- Ensure your Slack display name matches your Omni Campus account name so your results are tracked correctly.
Office hours
- Multiple regular office hours across different days/time zones.
- Special consulting hours are hosted by outstanding past GCI World students, potentially in their native languages.
Deadline change for attendance & homework
Original due time:
- 2 weeks after lecture at 11:00 AM UTC
New due time:
- 2 weeks + 1 day after lecture at 1:00 AM UTC
Examples:
- Attendance for first session: Oct 8 (11:00 AM) → Oct 9 (1:00 AM UTC)
- Homework for second session: Oct 8 (11:00 AM) → Oct 9 (1:00 AM UTC)
The course emphasizes extended work time.
Lecture content: Pandas for data cleaning (pandas fundamentals + practical tasks)
1) Where pandas fits in a data project workflow
A typical data processing project has 5 stages:
- Collection
- Cleaning
- Exploration
- Modeling
- Production/results
This session emphasizes pandas for collection/cleaning/exploration, especially:
- Handling inconsistent formats
- Fixing anomalies
- Managing missing values
Key claim:
- ~80% of analysis effort may happen before modeling.
2) Structured vs unstructured data
- Structured/tabular data: 2D tables (Excel/CSV) → pandas focus
- Unstructured data: text/images/videos → not the focus here
3) What pandas is
Pandas is a Python library for working with tabular numeric data and more, supporting:
- Series & DataFrame structures
- Numeric operations (including aggregation)
- Reading/writing common formats (CSV, Excel, JSON)
Limitation mentioned:
- It can be slow/memory-heavy on very large datasets, though many cleaning tasks are still manageable.
4) Core pandas data structures
- Series (1D)
- Like a labeled 1D array
- Has values and an index (index labels can be customized)
- DataFrame (2D)
- Table of rows and columns
- Organized with:
- row index
- column labels
- values
5) Using Google Colab + notebook execution
To open the course notebook in Colab:
- If it doesn’t open, try “Open with” → “Connect more apps” → add/select Google Colaboratory (Colab), then install/open.
Exercises run by executing notebook “cells” (e.g., Shift+Enter or the execute button).
Hands-on methodology & instruction-style workflow (pandas operations)
A) Importing pandas
Typical import:
import pandas as as pd
Using alias pd:
- e.g.,
pd.read_csv(...)
B) Creating and inspecting Series/DataFrames
Create a Series:
pd.Series([...])
Access a Series:
- Values:
series.values - Index labels:
series.index
Create a DataFrame:
- Build a dictionary where keys are column names and values are column data lists:
pd.DataFrame(dict_of_columns)
Inspect a DataFrame:
df.head()(first 5 rows by default)df.info()(types and missingness)df.describe()(summary statistics)
C) Loading and using a real dataset (anime data)
Steps include:
- Download a ZIP dataset from a URL using:
requeststo fetchzipfile+ I/O utilities to unzip
- Use the
treecommand to view extracted files. - Load selected CSVs with
pd.read_csv(...), then inspect using:head,info,describe
D) Data extraction / selection (columns, rows, elements)
Column selection
- Single column:
df['colname'] - Multiple columns:
df[['col1', 'col2']] - Dot notation may fail if column names contain spaces—use bracket notation.
Row selection by slicing
- NumPy-like end-exclusive slicing:
- e.g.,
df[0:3]
- e.g.,
- Note: label slicing behaves differently (end-inclusive for label-based slicing).
Label-based indexing
- Use
df.loc[...]for:- selecting by row/column labels
- label-based slicing (inclusive end)
- Can select:
- rows only
- columns only
- row+column combinations in one call
Index/position-based indexing
- Use
df.iloc[...]for selecting by integer positions
Single element access
df.at[row_label, col_label]df.iat[row_index, col_index]
Updating values
- Assign replacement values using
loc/at(or similar) for existing cells.
E) Organizing the mental model for selection methods
Selection can be understood using two dimensions:
- Granularity: whole DataFrame vs single element
- Reference type: labels vs integer indices
Mapping:
loc= label-basediloc= position-basedat/iat= single element (faster for scalars)
F) Creating/replacing columns and values
- Create a new column by assigning to a new column name (assignment creates it).
- Replace a specific cell using scalar selection methods such as
df.at[...]. - A
replacemethod exists (see docs for details).
G) Conditional filtering (subset rows)
General pattern:
- Put a boolean condition inside square brackets after the DataFrame.
Multiple conditions:
- Combine with logical operators (typically using parentheses):
(cond1) & (cond2)
Membership filtering:
- Use
isinto keep rows where a value is in a set (e.g.,studiosin{Sunrise, Nomad}).
H) Practice filtering example (Lesson exercise)
Filter for:
source == manga- and
members > 100000
Combine conditions using logical conjunction inside the filtering brackets.
I) Handling missing values (NaN)
- Missing values are represented as NaN.
- Check missingness:
df.isna()
- Count missing values per column:
- use
isna()+sum()over truth values
- use
Dataset outcomes mentioned:
anime.csv: no missing valuesanime_list.csv: no missing valuesanime_with_synopses.csv: 8 missing values in thesynopsiscolumn
J) Sorting
- Sorting by index (“index sort” / reorder by index)
- Sorting by column values:
sort_values(by='col', ascending=True/False)
K) Merging/joining multiple DataFrames
Merge using:
pd.merge(...)(key-based join)
Key concept:
- A key is a column (or columns) that identifies rows.
pd.merge defaults:
- Inner join (only rows with matching keys in both tables are kept)
If key column names differ:
- Use
left_onandright_on
Join types:
- Inner join: keep matching keys only
- Left outer join: keep all rows from left table; unmatched right rows become NaN
- Full outer join: keep all rows from both; unmatched entries become NaN
Emphasis:
- Correct key specification matters.
- Outer joins keep more data but introduce NaNs that must be handled.
L) Concatenation (stacking or side-by-side)
pd.concat(...)combines DataFrames without key matching.
Default behavior:
- Vertical concatenation (stack rows)
- Keeps original indexes (may cause duplicates)
- Can reset via
ignore_index=True - If columns don’t match, missing cells become NaN
Horizontal concatenation:
- Use
axis=1to join side-by-side based on index - If indexes don’t align, NaNs can appear
M) Dropping data and duplicates
Remove using drop(...):
- Rows: provide
index=... - Columns: provide
columns=...oraxis=1
Reset index if needed:
reset_index(...)
Duplicates:
- Identify with
duplicated(...) - Remove with
drop_duplicates(...) - May require resetting index afterward.
N) Mapping/transformation operations
- Map codes to labels:
- create a lookup dictionary
- use
map()to convert numeric/state codes to readable strings
- More complex transformations:
- use lambda with if logic (may include preprocessing such as type conversion)
O) Binning (discretizing continuous values)
cut- split into equal-width intervals based on breakpoints
- endpoint inclusion controlled by bracket/parenthesis semantics
value_counts- count how many fall in each bin
qcut- split into bins with equal counts (quantiles)
Decision principle:
- Choose based on goals (equal width vs equal frequency).
P) Aggregation and group operations
Use groupby:
- split DataFrame into groups based on one or more columns
Common operations:
size()(count groups)mean()(average by group)agg([...])(multiple aggregations: count/mean/max/min/etc.)
Note:
groupbyobjects are iterable; looping yields each group.
Q) Missing data and outlier handling (basic overview)
Missing data basics for anime:
- Convert “unknown” values to a non-NaN representation (mentioned as a preprocessing step).
Strategies described:
- Listwise deletion: drop rows with any missing values
- Example impact: ~17k rows → ~3k rows
- Pairwise deletion: ignore missing values per column and use available data (conceptually described)
- Imputation:
fillna(value)with a constant (example: -1)- Mean imputation possible but warned about bias and leakage risks
- For time series: fill using previous time steps to avoid using future data (data leakage)
Outliers (conceptual overview):
- Visualize with box plots
- Clip at percentiles
- Or use normal-distribution assumptions and thresholds (e.g., outside 3 standard deviations)
Reminder:
- No single method fits all—choose based on data and goals.
Homework & attendance task structure (final instructions)
Task types
Two types of tasks:
- Attendance surveys
- Homework (Python code submitted to Omni Campus)
Attendance surveys
- Deadline for “today’s” survey: Oct 16, 1:00 AM UTC
- To complete the course:
- submit at least 7 out of 14 surveys
- Surveys for first and second classes due: Oct 9, 1:00 AM UTC
- Late participants:
- use lecture recordings via the student record
- then submit attendance survey on Omni Campus
Homework
- Write Python code and submit to Omni Campus
- Deadline: Oct 16, 1:00 AM UTC
- Scoring:
- On-time: 3 points
- Late/missed: maximum 2 points
- 8 homework assignments total → maximum 24 points
- Completion requirement:
- need at least 14 points
Upcoming next lecture
Next week: Matplotlib (data visualization) Materials scheduled to be uploaded tomorrow.
Speakers / sources featured
Speakers
- Erin (member of Matsuo lab; welcomes participants, shares implementation tips, introduces the instructor)
- Akihiro “Aki” / Akihiro (postdoctoral fellow in Matsuo’s lab; main lecturer/instructor)
Assistant/consulting sources mentioned
- GCA World staff
- GCI graduates serving as office hour assistants
- Special consulting assistants: outstanding past students from multiple countries (Thailand, Vietnam, Indonesia, Malaysia, Colombia, Zimbabwe)
External data source referenced
- MyAnimeList database (anime dataset used in the Colab exercise)
Rate this summary
Your feedback will help improve summaries.
Improve this summary
Reprocess with a stronger model when the summary feels incomplete or inaccurate.
Translate summary in another language
Ask questions to this video
Chat for follow-up questions, clarifications, and source-backed answers.