import pandas as pddf = pd.read_excel(r"test.xlsx", sheet_name = 0, header = 0)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:常用函数)
数值删除
删除列
df.drop(["年龄"], axis=1)df.drop(df.columns[[1,2]],axis=1)df.drop(columns=["年龄"])
删除行
df.drop([1,2], axis=0)df.drop(df.index[[1,0]])df.drop(index=[1,3])
其他操作
数值计数
df["年龄"].value_counts(normalize = False, sort = False)# normalize :是否转化为百分比占数,默认为 FALSE# sort :是否降序排序,默认为 False
获取唯一值
df["年龄"].unique()
数值查找
df.isin([54,27])df["年龄"].isin([52,27])
区间切分
# pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')# x :目标数组,必须是一维# bins :可以是整数(例如 3)、标量序列(例如 [0,20,40,60])、区间 IntervalIndex (例如 pd.IntervalIndex.from_tuples([(0, 20), (20, 40), (40, 60)]))# right :区间右边是否是闭区间,默认是# labels :值可以是数组(例如 labels=["bad", "medium", "good"] )或布尔值,默认是FALSE,如果存在 IntervalIndex ,则该值忽略# retbins :布尔值,如果为真,则在有 bins 的情况下返回各区间划分# precision :精确度,默认为 3# include_lower :布尔值,默认为 False,第一个区间是否左闭合# duplicates :可选 raise 、 droppd.cut(df["年龄"], 3, duplicates='drop')# pd.qcut(df["年龄"], 3)
插入新的行或列
# 插入新列# df.insert(2, "喜欢的颜色", ['H', 'Y', 'B', 'W', 'P', 'H', 'Y', 'B', 'W', 'P', 'H', 'Y', 'B', 'W', 'P', 'D'])# df# 插入新行# 没有专门的方法插入新行,但是可以使用表的纵向拼接功能实现插入新行insert_row = pd.DataFrame([["A17", 30, "女", "2019-08-24"]], columns=["编号", "年龄", "性别", "注册时间"])insert_rownp.vstack((df, insert_row))
行列互换
# 使用 .T 方法df.T
索引重塑
重塑:把数据从表格型数据转换到树形结构,即是重塑。
方法: stack()
逆重塑: unstack()
df.stack()df.unstack()
长宽表转换
使用 melt() 方法实现。
df.melt(id_vars = “列名”,
var_name = “新列名”,
value_name = “新列名”)
其中:
id_vars :用于指明宽表转换到长表时保持不变的列
var_namear :表示原来的列索引转化为“行索引”后对应的列名,即 variable 对应的名称
value_namealue :表示新索引对应的值的列名,即 value 对应的名称
df.insert(1, "姓名", ['刘一', '王二', '张三', '李四', '肖五', '赵六'])# df.melt(id_vars = ['姓名', "性别"])
apply() 函数和 applymap() 函数
apply()函数:主要用于对 DataFrame 中的某一 column 或 row 中的元素执行相同的函数操作。
applymap()函数:主要用于对 DataFrame 中的每一个元素执行相同的函数操作。
这两者都需要配合 Python 中的匿名函数 lambda 使用。
df# apply() 函数df['年龄'].apply(lambda x: x + 2)# applymap() 函数df.applymap(lambda x: x + 2)# 注意:数据类型的话,可以执行的操作也不一样
