Excel. pd.read_excel("budget.xlsx", sheet_name="Q1") reads one sheet; sheet_name=None reads them all into a dictionary. Many workbooks put a title and a note above the table, so the real header is lower down: skiprows=2 skips those lines. df.to_excel("out.xlsx", index=False) writes a sheet. (pandas uses the openpyxl library for .xlsx files; this notebook loads it the first time you need it.)
JSON. pd.read_json handles flat records. Nested records, where each order holds a customer object and a list of items, need pd.json_normalize: record_path="items" makes one row per item, and meta= copies fields from the parent, including nested ones like ["customer", "city"].
Parquet. to_parquet and read_parquet store the column types with the data, so dates stay dates and text stays text, which CSV can't do. Loading the Parquet library takes a few seconds the first time.