Pandas库
bash
pip install pandas
基本概念
-
数据结构
-
Series: 一维数据结构
pythonimport pandas as pd data = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']) print(data)
-
DataFrame: 二维数据结构
pythondata = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] } df = pd.DataFrame(data) print(df)
-
读取数据
-
从 CSV 文件读取数据
pythondf = pd.read_csv('file.csv') print(df.head())
-
从 Excel 文件读取数据
pythondf = pd.read_excel('file.xlsx', sheet_name='Sheet1') print(df.head())
-
从 SQL 查询读取数据
pythonimport sqlite3 conn = sqlite3.connect('database.db') df = pd.read_sql_query('SELECT * FROM table', conn) print(df.head())
数据处理
-
查看数据
-
查看前 5 行
pythonprint(df.head())
-
查看后 5 行
pythonprint(df.tail())
-
查看数据的简要信息
pythonprint(df.info())
-
查看数据的统计摘要
pythonprint(df.describe())
-
-
选择和过滤数据
-
按列选择
pythonprint(df['Name'])
-
按行选择
pythonprint(df.loc[0]) # 按标签 print(df.iloc[0]) # 按位置
-
条件过滤
pythonfiltered_df = df[df['Age'] > 30] print(filtered_df)
-
-
数据清洗
-
处理缺失值
pythondf = df.dropna() # 删除含缺失值的行 df = df.fillna(0) # 将缺失值填充为 0
-
去重
pythondf = df.drop_duplicates()
-
数据类型转换
pythondf['Age'] = df['Age'].astype(float)
-
-
数据操作
-
添加列
pythondf['Country'] = 'USA'
-
删除列
pythondf = df.drop('Country', axis=1)
-
重命名列
pythondf = df.rename(columns={'Name': 'Full Name'})
-
-
数据聚合
-
按组聚合
pythongrouped_df = df.groupby('Country').agg({'Age': 'mean'}) print(grouped_df)
-
合并数据
pythondf1 = pd.DataFrame({'ID': [1, 2], 'Value': ['A', 'B']}) df2 = pd.DataFrame({'ID': [1, 2], 'Score': [85, 90]}) merged_df = pd.merge(df1, df2, on='ID') print(merged_df)
-
拼接数据
pythondf1 = pd.DataFrame({'Name': ['Alice', 'Bob']}) df2 = pd.DataFrame({'Name': ['Charlie', 'David']}) concatenated_df = pd.concat([df1, df2], ignore_index=True) print(concatenated_df)
-
-
数据排序
-
按列排序
pythonsorted_df = df.sort_values(by='Age') print(sorted_df)
-
排序方向
pythonsorted_df = df.sort_values(by='Age', ascending=False) print(sorted_df)
-
数据输出
-
保存为 CSV 文件
pythondf.to_csv('output.csv', index=False)
-
保存为 Excel 文件
pythondf.to_excel('output.xlsx', index=False)
其他常用功能
-
透视表
pythonpivot_table = pd.pivot_table(df, values='Age', index='Country', aggfunc='mean') print(pivot_table)
-
时间序列
-
日期时间转换
pythondf['Date'] = pd.to_datetime(df['Date'])
-
设置时间索引
pythondf = df.set_index('Date')
-