Pandas dataframes for everyday life
Creating a DataFrame
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Eve"],
"age": [25, 30, 22],
"score": [88.5, 91.0, 76.3]
})Loading from CSV
df = pd.read_csv("data.csv")
df.to_csv("out.csv", index=False)Inspecting
df.head() # first 5 rows df.tail(3) # last 3 df.info() # types, nulls df.describe() # stats summary df.shape # (rows, cols) df.columns # column names
Selecting columns
df["age"] # single → Series df[["name", "score"]] # multiple → DataFrame
Filtering rows
df[df["age"] > 24]
df[(df["age"] > 22) & (df["score"] > 80)]
df[df["name"].isin(["Alice", "Eve"])]
df.query("age > 24 and score > 80")loc vs iloc
df.loc[0, "name"] # by label df.loc[df["age"] > 24] # by condition df.iloc[0] # by position df.iloc[1:3, 0:2] # slice
Cleaning
df.isnull().sum() # count nulls
df.dropna() # drop null rows
df["age"].fillna(df["age"].mean()) # fill with mean
df.drop_duplicates(subset=["name"]) # remove dupes
df["age"] = df["age"].astype(float) # cast type
df.rename(columns={"score": "points"}) # renameGrouping & aggregating
df.groupby("name")["score"].mean()
df.groupby("name").agg(
avg_score=("score", "mean"),
max_age=("age", "max")
)Sorting
df.sort_values("score", ascending=False)
df.sort_values(["age", "score"], ascending=[True, False])Joining
pd.merge(left, right, on="id") # inner join pd.merge(left, right, on="id", how="left") # left join
My own example
Click-to-copy showcase of how things work in pandas:
import pandas as pd
import numpy as np
def main():
print("1. Creating DataFrames")
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'score': [85.5, 90.0, 78.5]}
df = pd.DataFrame(data)
print(" from dict:")
print(df)
df2 = pd.DataFrame(np.random.randn(3, 2), columns=['col1', 'col2'])
print("\n from numpy array:")
print(df2)
print("\n2. DataFrame info")
print(" shape:", df.shape)
print(" dtypes:")
print(df.dtypes)
print(" columns:", df.columns.tolist())
print(" index:", df.index.tolist())
print("\n3. Selecting data")
print(" single column:")
print(df['name'])
print(" multiple columns:")
print(df[['name', 'age']])
print(" first row:")
print(df.iloc[0])
print(" rows 0-1:")
print(df.iloc[0:2])
print("\n4. Boolean filtering")
mask = df['age'] > 25
print(" age > 25:")
print(df[mask])
print(" age > 25 AND score > 80:")
print(df[(df['age'] > 25) & (df['score'] > 80)])
print("\n5. Adding/modifying columns")
df['age_group'] = df['age'].apply(lambda x: 'young' if x < 30 else 'old')
print(" with new column:")
print(df)
print("\n6. Aggregation and grouping")
print(" mean of numeric columns:")
print(df.mean(numeric_only=True))
print(" group by age_group:")
grouped = df.groupby('age_group')[['age', 'score']].mean()
print(grouped)
print("\n7. Sorting")
print(" sort by age:")
print(df.sort_values('age'))
print(" sort by score descending:")
print(df.sort_values('score', ascending=False))
print("\n8. Handling missing data")
df_with_nan = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8]
})
print(" with NaN:")
print(df_with_nan)
print(" dropna():")
print(df_with_nan.dropna())
print(" fillna(0):")
print(df_with_nan.fillna(0))
print("\n9. Merging/joining")
df_a = pd.DataFrame({'key': [1, 2, 3], 'val_a': ['a', 'b', 'c']})
df_b = pd.DataFrame({'key': [1, 2, 4], 'val_b': ['x', 'y', 'z']})
print(" merge on key:")
merged = pd.merge(df_a, df_b, on='key', how='inner')
print(merged)
print("\n10. Pivot table")
data_pivot = {
'product': ['A', 'A', 'B', 'B', 'A', 'B'],
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'sales': [100, 150, 200, 180, 120, 220]
}
df_pivot = pd.DataFrame(data_pivot)
print(" original:")
print(df_pivot)
pivot = df_pivot.pivot_table(values='sales', index='product', columns='region', aggfunc='sum')
print(" pivoted:")
print(pivot)
print("\n11. Value counts")
print(" value_counts():")
print(df_with_nan['A'].value_counts())
print("\n12. Basic statistics")
print(" describe():")
print(df[['age', 'score']].describe())
print("\n13. Saving and loading")
csv_path = "tmp_pandas_example.csv"
df.to_csv(csv_path, index=False)
print(f" saved to {csv_path}")
loaded_df = pd.read_csv(csv_path)
print(" loaded back:")
print(loaded_df)
if __name__ == "__main__":
main()