本文共 4828 字,大约阅读时间需要 16 分钟。
Pandas 库是 Python 中非常强大的数据分析工具,它可以帮助开发者快速处理和分析数据。Pandas 提供了丰富的数据结构和操作方法,使得数据分析变得更加高效和直观。
在使用 Pandas 之前,需要先导入必要的库:
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt
基本创建:pd.Series 是一种一维数据结构,类似于列表,但还可以指定索引。
S1 = pd.Series(['a', 'b', 'c']) # default index
指定索引:
S1 = pd.Series(['a', 'b', 'c'], index=(1, 3, 4))
字典形式指定索引:
S1 = pd.Series({1: 'a', 2: 'b', 3: 'c'}) 查看索引和值:
S1.index() # 查看索引S1.values() # 查看数据
基本创建:pd.DataFrame 是一种二维数据结构,类似于电子表格。
Df = pd.DataFrame(['a', 'b', 'c'])
指定行和列索引:
Df = pd.DataFrame([[a, A], [b, B], [c, C]], columns=['小写', '大写'], index=['一', '二', '三'])
列索引和行索引:
Columns 为列索引,index 为行索引。
从 Excel 文件加载:
df = pd.read_excel(r'C:\user...xlsx', sheet_name='sheet1') # 或df = pd.read_excel(r'C:\user...xlsx', sheet_name=0)
指定列索引和行索引:
df = pd.read_excel(r'C:\user...xlsx', index_col=0, header=0)
导入指定列:
df = pd.read_excel(r'C:\user...xlsx', usecols=[0, 1]) # 不能有 index_col 和 header 同时使用
从文本文件加载:
df = pd.read_table(r'C:\user...txt', sep=' ')
查看数据:
df.head(2) # 查看前两行,默认查看前五行df.shape # 查看数据行数和列数df.info() # 查看数据类型和缺失值
数据描述:
df.describe() # 查看数据分布(均值、中位数、标准差等)
查看缺失值:
df.info()
删除缺失值的行:
df.dropna()
按条件删除缺失值的行:
df.dropna(how='all') # 删除全为空值的行
填充缺失值:
df.fillna(0) # 用 0 填充所有空值df.fillna({'性别': '男', '年龄': '30'}) # 适用于特定列填充 删除重复值:
df.drop_duplicates() # 默认保留第一行df.drop_duplicates(subset=['性别']) # 保留第一行df.drop_duplicates(subset=['性别', '公司'], keep='last') # 保留最后一行
查看列类型:
df['ID'].dtype
转换数据类型:
df['ID'].astype('float') 添加索引:
df.index = [1, 2, 3]
重新命名索引:
df.rename(index={'订单编号': '新订单编号', '客户姓名': '新客户姓名'}) 列索引重命名:
df.rename(columns={1: '一', 2: '二'}) 重置索引:
df.reset_index() # 将索引转为列df.reset_index(level=0) # 只转换某一级索引df.reset_index(drop=True) # 删除原有索引
df[['ID', '姓名']]
df.iloc[[1, 3], [2, 4]] # 行列编号选择df.iloc[1, 1] # 选取第3行第2列
df[df['年龄'] < 45] # 筛选年龄小于45的数据df[(df['年龄'] < 45) & (df['ID'] < 4)] # 多条件筛选
df.iloc[1:3, 2:4] # 行和列切片
df['年龄'].replace(100, 33) # 替换特定值df.replace(np.NaN, 0) # fillna 的另一种写法df.replace(['A', 'B'], 'C') # 多对一替换df.replace({'A': 'a', 'B': 'b', 'C': 'c'}) # 多对多替换 df.sort_values(by=['申请单编号'], ascending=False) # 降序排序df.sort_values(by=['申请单编号'], na_position='first') # 升序排序,缺失值在第一位df.sort_values(by=['col1', 'col2'], ascending=[False, True]) # 多列排序
df['销量'].rank(method='first') # 排序df.drop(['销量', 'ID'], axis=1) # 删除列df.drop(df.columns[[4, 5]], axis=1) # 删除特定列df.drop(columns=['a', 'b']) # 删除特定列df.drop(df.index[[4, 5]], axis=0) # 删除特定行df.drop(index=['a', 'b']) # 删除特定行
df['ID'].value_counts() # 统计唯一值数量df['ID'].value_counts(normalize=True, sort=False) # 统计唯一值比例df['ID'].unique() # 查看唯一值df['年龄'].isin(['a', 11]) # 判断是否包含特定值
from datetime import datetimedatetime.now() # 返回当前时间datetime.now().year # 返回年份datetime.now().weekday() - 1 # 返回星期几(0=星期六,6=星期日)
datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 格式化日期pd.DatetimeIndex(['2020-02-03', '2020-03-05']) # 设置时间索引 cha = datetime(2018, 5, 21, 19, 50) - datetime(2018, 5, 18, 17, 50)cha.days # 返回天数cha.seconds # 返回秒数cha.seconds / 3600 # 返回小时数
df.groupby('客户分类').count() # 客户分类后统计数量df.groupby('客户分类').sum() # 客户分类后统计和df.groupby(['客户分类', '区域分类']).sum() # 多分类统计df.groupby('客户分类').agg(['sum', 'count']) # 多种汇总方式 pd.pivot_table(data=df, values=['ID', '销量'], index='客户分类', columns='区域', aggfunc={'ID': 'count', '销量': 'sum'}, fill_value=0, margins=True, dropna=None, margins_name='总计') pd.merge(df1, df2) # 默认连接pd.merge(df1, df2, on='学号') # 指定连接列pd.merge(df1, df2, left_on='学号', right_on='编号') # 左右连接pd.merge(df1, df2, left_index='学号', right_index='编号') # 索引连接
pd.concat([df1, df2]) # 纵向拼接pd.concat([df1, df2], ignore_index=True) # 重置索引pd.concat([df1, df2], ignore_index=True).drop_duplicates() # 拼接后去重
df.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx') # 导出文件df.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx', sheet_name='文档') # 指定 sheetdf.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx', sheet_name='文档', index=False) # 去掉索引df.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx', sheet_name='文档', index=False, columns=['ID', '销量', '姓名']) # 指定导出列df.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx', sheet_name='文档', index=False, columns=['ID', '销量', '姓名'], encoding='utf-8') # 设置编码df.to_excel(r'C:\users\zhoulifu\Desktop\测试.xlsx', sheet_name='文档', index=False, columns=['ID', '销量', '姓名'], encoding='utf-8', na_rep=0) # 填充缺失值
writer = pd.ExcelWriter(r'C:\users\zhoulifu\Desktop\测试.xlsx', engine='xlsxwriter')df1.to_excel(writer, sheet_name='表一')df2.to_excel(writer, sheet_name='表二')writer.save()
通过以上内容,可以快速熟悉和掌握 Pandas 库的使用方法,进行数据分析和处理。
转载地址:http://gpvfk.baihongyu.com/