import pandas as pd
基本操作
- 创建DataFrame数据集,列名为A、B、C
df = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]})
- 提取指定值
df.loc[0] # 提取索引为0的行,即第一行
df.A # 提取A列, 方法一
df['A'] # 提取A列,方法二
df.A[0] # 提取A列第一行数据,或用df['A'][0], df.loc[0]['A']
df[df.A<3] # 条件取值,提取A列值小于3的行
df.loc[df.A<3, 'B'] # 提取出符合A列值小于3的B列值
df.loc[df.A<3, 'B'] = 1 # 为符合条件的B列赋值为1
# 多个条件取值 and
df.loc[(df.A<3) & (df.B>4), 'C']
# 多个条件取值 or
df.loc[(df.A<3) | (df.B>4), 'C']
# 使用lambda表达式提取出A列值小于3的行
df[df.A.apply(lambda x: x<3)]
- 改变列名
# 方法一,统一改变列名
df.columns = ['a', 'b', 'c']
# 方法二,改变某一个或多个列名
df.rename(columns={'A': 'a',
'B': 'b'},
inplace=True) # inplace默认值为False不会改变df本身
- 删除指定行或列
df.drop(0) # 删除第一行
df.drop([0, 1]) # 删除第一行和第二行
df.drop(['A', 'B'], axis=1) # 删除A和B两列,axis没有赋值时默认为0表示行
# 上述做法会获得删除后的数据集,但不会改变df本身
# 删除第一行并赋值给df
df = df.drop(0)
- 删除列后重设索引值从0排序
df.reset_index(drop=True, inplace=True)
- 复制数据集
ddf = df.copy()
- 快速查看数据集情况
ddf.head() # 返回ddf前五行
ddf.head(3) # 返回ddf前三行
ddf.info() # 返回ddf每列的数据概览
ddf.A.isnull() # 返回A列缺失值
- 改变某列的数据类型
ddf.A.dtype # 查看A列的数据类型
ddf.A = ddf.A.astype(str) # 将A列的数据改为字符串型
- 赋值
df.A.replace(1, 5, inplace=True) # 将A列中的全部1替换为5
# 将A列的第一个值改为 'None'
df.loc[0, 'A'] = 'None' # 0为索引值
# 将A列的1、2、3分别改为a、b、c
df.A = df.A.map({1:'a', 2:'b', 3:'c'})
# 根据A列的a、b、c三个值,新增三列哑变量
pd.get_dummies(df.A)
- 将数据集储存至本地csv
df.to_csv('df_name.csv')
# 避免写入索引 index
df.to_csv('df_name.csv', index=False)
# 避免写入标题 header
df.to_csv('df_name.csv', header=False)
简单计算
df.A.value_counts() # 返回A列中不同值的个数
df.B.mean() # B列值计算平均数
df.B.std() # B列值计算样本标准差
df.B.values.std() # B列值计算总体标准差
(更新中)