017pandas常用代码

Pandas常用数据分析代码整理

一、数据读取与导出

1. 数据读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import numpy as np

# 从CSV文件读取数据
df_csv = pd.read_csv('data.csv')

# 从Excel文件读取数据
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 从SQL表读取数据
df_sql = pd.read_sql('SELECT * FROM table', connection_object)

# 从JSON文件读取数据
df_json = pd.read_json('data.json')

# 从剪贴板读取数据
df_clipboard = pd.read_clipboard()

# 从字典创建DataFrame
data_dict = {'列1': [1, 2, 3], '列2': ['a', 'b', 'c']}
df_dict = pd.DataFrame(data_dict)

2. 数据导出

1
2
3
4
5
6
7
8
9
10
11
# 导出为CSV文件
df.to_csv('output.csv', index=False)

# 导出为Excel文件
df.to_excel('output.xlsx', index=False, sheet_name='结果')

# 导出为SQL表
df.to_sql('table_name', connection_object, if_exists='replace')

# 导出为JSON文件
df.to_json('output.json')

二、数据查看与探查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看DataFrame前5行
print(df.head())

# 查看DataFrame后3行
print(df.tail(3))

# 查看DataFrame基本信息(列名、数据类型、非空值数量等)
df.info()

# 查看数值型列的描述性统计信息
print(df.describe())

# 查看DataFrame的行数和列数
print(f"行数: {df.shape[0]}, 列数: {df.shape[1]}")

# 查看列名
print(df.columns.tolist())

# 查看数据类型
print(df.dtypes)

# 查看某列的唯一值及计数
print(df['列名'].value_counts(dropna=False))

三、数据选择与筛选

1. 按列选择

1
2
3
4
5
# 选择单列(返回Series)
col_series = df['列名']

# 选择多列(返回DataFrame)
cols_df = df[['列1', '列2']]

2. 按行选择

1
2
3
4
5
6
7
8
9
10
11
12
# 按位置选择单行
row_loc = df.iloc[0]

# 按位置选择多行
rows_loc = df.iloc[1:4]

# 按标签选择行
row_label = df.loc['索引名']

# 按条件选择行
filtered_rows = df[df['数值列'] > 0.5]
filtered_rows = df[(df['列1'] > 10) & (df['列2'] == '值')]

3. 同时选择行和列

1
2
3
4
5
# 按位置选择
subset = df.iloc[1:3, 0:2]

# 按标签选择
subset = df.loc[['索引1', '索引2'], ['列1', '列2']]

四、数据清洗

1. 缺失值处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 检查缺失值
missing_values = df.isnull().sum()
print(missing_values)

# 删除包含缺失值的行
df_dropna_rows = df.dropna(axis=0)

# 删除包含缺失值的列
df_dropna_cols = df.dropna(axis=1)

# 填充缺失值
df_fillna = df.fillna({'数值列': df['数值列'].mean(), '类别列': 'Unknown'})

# 前向填充
df_ffill = df.fillna(method='ffill')

# 后向填充
df_bfill = df.fillna(method='bfill')

2. 重复值处理

1
2
3
4
5
# 检查重复行
duplicates = df.duplicated()

# 删除重复行
df_unique = df.drop_duplicates()

3. 数据类型转换

1
2
3
4
5
6
7
8
9
10
11
# 转换为整数类型
df['列名'] = df['列名'].astype(int)

# 转换为浮点类型
df['列名'] = df['列名'].astype(float)

# 转换为日期时间类型
df['日期列'] = pd.to_datetime(df['日期列'])

# 安全转换为数值类型
df['数值列'] = pd.to_numeric(df['数值列'], errors='coerce')

4. 列名与索引操作

1
2
3
4
5
6
7
8
9
10
11
# 重命名列名
df_renamed = df.rename(columns={'旧列名': '新列名'})

# 批量重命名列名
df_renamed = df.rename(columns=lambda x: x.lower())

# 设置索引
df_indexed = df.set_index('列名')

# 重置索引
df_reset = df.reset_index(drop=True)

五、数据转换与处理

1. 数据排序

1
2
3
4
5
# 按列值升序排序
df_sorted = df.sort_values(by='列名')

# 按多列值排序
df_sorted = df.sort_values(by=['列1', '列2'], ascending=[True, False])

2. 数据分组与聚合

1
2
3
4
5
6
7
8
9
10
11
12
13
# 按单列分组并计算均值
grouped_mean = df.groupby('分组列')['数值列'].mean()

# 按多列分组并应用多个聚合函数
grouped_agg = df.groupby(['列1', '列2']).agg({
'数值列1': ['sum', 'mean'],
'数值列2': 'max'
})

# 自定义聚合函数
def range_func(x):
return x.max() - x.min()
grouped_custom = df.groupby('分组列')['数值列'].agg(range_func)

3. 数据合并与连接

1
2
3
4
5
6
7
8
9
10
11
# 垂直拼接DataFrame
df_concat = pd.concat([df1, df2], ignore_index=True)

# 水平拼接DataFrame
df_concat = pd.concat([df1, df2], axis=1)

# 内连接
merged_inner = pd.merge(df1, df2, on='连接键', how='inner')

# 左连接
merged_left = pd.merge(df1, df2, on='连接键', how='left')

4. 数据重塑

1
2
3
4
5
6
7
8
9
10
# 宽格式转长格式
df_melted = pd.melt(df, id_vars=['ID列'], value_vars=['值列1', '值列2'],
var_name='变量名', value_name='值')

# 长格式转宽格式
df_pivoted = df.pivot(index='行索引', columns='列索引', values='值列')

# 数据透视表
pivot_table = df.pivot_table(index='行索引', columns='列索引',
values='值列', aggfunc='mean')

六、数据分析与统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 计算基本统计量
mean_value = df['列名'].mean()
median_value = df['列名'].median()
std_value = df['列名'].std()
sum_value = df['列名'].sum()
count_value = df['列名'].count()

# 相关系数
correlation = df.corr()

# 累计统计
cum_sum = df['列名'].cumsum()
cum_prod = df['列名'].cumprod()

# 滚动窗口统计
rolling_mean = df['列名'].rolling(window=3).mean()

七、数据可视化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import matplotlib.pyplot as plt

# 折线图
df.plot.line(x='x轴列', y='y轴列', title='折线图')
plt.show()

# 柱状图
df.plot.bar(x='类别列', y='值列', title='柱状图')
plt.show()

# 散点图
df.plot.scatter(x='x列', y='y列', c='颜色列', cmap='viridis')
plt.show()

# 直方图
df['数值列'].plot.hist(bins=20, title='直方图')
plt.show()

# 箱线图
df.plot.box(title='箱线图')
plt.show()

# 饼图
df['类别列'].value_counts().plot.pie(title='饼图', autopct='%1.1f%%')
plt.show()

八、常用函数速查表

功能类别 常用函数
数据读取 pd.read_csv(), pd.read_excel(), pd.read_sql()
数据导出 df.to_csv(), df.to_excel(), df.to_sql()
数据查看 df.head(), df.tail(), df.info(), df.describe()
数据选择 df.loc[], df.iloc[], df[条件]
缺失值处理 df.dropna(), df.fillna(), df.interpolate()
数据分组 df.groupby(), df.agg(), pivot_table()
数据合并 pd.concat(), pd.merge(), df.join()
数据转换 pd.melt(), df.pivot(), df.replace()
统计分析 df.mean(), df.sum(), df.corr(), df.count()
可视化 df.plot(), df.plot.bar(), df.plot.scatter()