DataFrame Basics
Inspect Shape and Columns
Derive row count, column count, and sorted column names from a list of records
using len and a key-extraction loop. With pandas, df.shape and
df.columns expose the same facts directly as attributes on the DataFrame.
By hand
With pandas
df.shape returns a (rows, cols) tuple. df.columns is an Index of
column labels; .tolist() converts it to a plain Python list.
naive.py
# trace: ignore records
records = [
{'name': 'al', 'age': 20, 'score': 80},
{'name': 'bo', 'age': 25, 'score': 90},
{'name': 'cy', 'age': 22, 'score': 70},
{'name': 'di', 'age': 28, 'score': 85},
]
n_rows = len(records)
cols = []
for k in records[0]:
cols.append(k)
cols = sorted(cols)
n_cols = len(cols)
print('RESULT:', (n_rows, n_cols, cols))
library.py
import pandas as pd
from dalib.display import set_display
set_display()
records = [
{'name': 'al', 'age': 20, 'score': 80},
{'name': 'bo', 'age': 25, 'score': 90},
{'name': 'cy', 'age': 22, 'score': 70},
{'name': 'di', 'age': 28, 'score': 85},
]
df = pd.DataFrame(records)
cols = sorted(df.columns.tolist())
print('shape:', df.shape)
print('columns:', df.columns.tolist())
print('RESULT:', (df.shape[0], df.shape[1], cols))
shape: (4, 3)
columns: ['name', 'age', 'score']
RESULT: (4, 3, ['age', 'name', 'score'])
Implementation notes
df.shapeis a property, not a method — no parentheses. It returns a plain Python tuple, sodf.shape[0](row count) anddf.shape[1](column count) work without any conversion.df.columnsis a pandasIndexobject, not a list. It supports label lookup, set operations (union, intersection), and alignment — calling.tolist()drops those capabilities and gives a plain Python list for stable comparison or printing.- Column order reflects insertion order (the key order of the first record when
built from a list-of-dicts).
sorted()gives a deterministic order for comparison, as in the naive loop. df.dtypesgives the dtype of every column at once;df.info()gives shape, column names, dtypes, and memory usage in one call.