Yeah, good observation! However, my goal wasn't to compare the time they take to have the result in a pandas DataFrame. If I did that, I should also add the pd.read_csv() within the %timeit, because the c.sql() handles both the filtering and the data retrieval.
For simplicity, I'd rather keep it as it is now because we can try many approaches here and all will deliver different results, some in favor of pandas and others in favor of DuckDB.
Anyway, thanks a lot for your comments! I love being challenged and proven wrong. This is a great way to learn :)