1. import pandas as pd
  2. df = pd.read_excel(r"test.xlsx", sheet_name = 0, header = 0)
  3. df
编号 年龄 性别 注册时间
0 A1 54 2019-08-23
1 A2 27 2019-08-24
2 A3 37 2019-08-25
3 A4 40 2019-08-26
4 A5 20 2019-08-27
5 A6 20 2019-08-28

数值替换

前文已讲(第五章 3.2.2 )。

数值排序

前文已讲(第四章 5:常用函数)

数值删除

删除列

  1. df.drop(["年龄"], axis=1)
  2. df.drop(df.columns[[1,2]],axis=1)
  3. df.drop(columns=["年龄"])

删除行

  1. df.drop([1,2], axis=0)
  2. df.drop(df.index[[1,0]])
  3. df.drop(index=[1,3])

其他操作

数值计数

  1. df["年龄"].value_counts(normalize = False, sort = False)
  2. # normalize :是否转化为百分比占数,默认为 FALSE
  3. # sort :是否降序排序,默认为 False

获取唯一值

  1. df["年龄"].unique()

数值查找

  1. df.isin([54,27])
  2. df["年龄"].isin([52,27])

区间切分

  1. # pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
  2. # x :目标数组,必须是一维
  3. # bins :可以是整数(例如 3)、标量序列(例如 [0,20,40,60])、区间 IntervalIndex (例如 pd.IntervalIndex.from_tuples([(0, 20), (20, 40), (40, 60)]))
  4. # right :区间右边是否是闭区间,默认是
  5. # labels :值可以是数组(例如 labels=["bad", "medium", "good"] )或布尔值,默认是FALSE,如果存在 IntervalIndex ,则该值忽略
  6. # retbins :布尔值,如果为真,则在有 bins 的情况下返回各区间划分
  7. # precision :精确度,默认为 3
  8. # include_lower :布尔值,默认为 False,第一个区间是否左闭合
  9. # duplicates :可选 raise 、 drop
  10. pd.cut(df["年龄"], 3, duplicates='drop')
  11. # pd.qcut(df["年龄"], 3)

插入新的行或列

  1. # 插入新列
  2. # df.insert(2, "喜欢的颜色", ['H', 'Y', 'B', 'W', 'P', 'H', 'Y', 'B', 'W', 'P', 'H', 'Y', 'B', 'W', 'P', 'D'])
  3. # df
  4. # 插入新行
  5. # 没有专门的方法插入新行,但是可以使用表的纵向拼接功能实现插入新行
  6. insert_row = pd.DataFrame([["A17", 30, "女", "2019-08-24"]], columns=["编号", "年龄", "性别", "注册时间"])
  7. insert_row
  8. np.vstack((df, insert_row))

行列互换

  1. # 使用 .T 方法
  2. df.T

索引重塑

重塑:把数据从表格型数据转换到树形结构,即是重塑。
方法: stack()

逆重塑: unstack()

  1. df.stack()
  2. df.unstack()

长宽表转换

使用 melt() 方法实现。
df.melt(id_vars = “列名”,
var_name = “新列名”,
value_name = “新列名”)

其中:

id_vars :用于指明宽表转换到长表时保持不变的列

var_namear :表示原来的列索引转化为“行索引”后对应的列名,即 variable 对应的名称

value_namealue :表示新索引对应的值的列名,即 value 对应的名称

  1. df.insert(1, "姓名", ['刘一', '王二', '张三', '李四', '肖五', '赵六'])
  2. # df.melt(id_vars = ['姓名', "性别"])

apply() 函数和 applymap() 函数

apply()函数:主要用于对 DataFrame 中的某一 column 或 row 中的元素执行相同的函数操作。

applymap()函数:主要用于对 DataFrame 中的每一个元素执行相同的函数操作。

这两者都需要配合 Python 中的匿名函数 lambda 使用。

  1. df
  2. # apply() 函数
  3. df['年龄'].apply(lambda x: x + 2)
  4. # applymap() 函数
  5. df.applymap(lambda x: x + 2)
  6. # 注意:数据类型的话,可以执行的操作也不一样