| 方法/操作 | 语法示例 | 描述 |
| 等宽分箱 | pd.cut(df[‘col’], bins=3) | 将数值列分为等宽区间(如分为低/中/高) |
| 等频分箱 | pd.qcut(df[‘col’], q=4) | 将数值列分为等频区间(每箱数据量相同) |
cut()
pandas.cut()用于将连续数据(如数值型数据)分割成离散的区间。可以使用cut()来将数据划分为不同的类别或范围,通常用于数据的分箱处理。
cut()部分参数说明:
| 参数 | 说明 |
| x | 要分箱的数组或Series,通常是数值型数据。 |
| bins | 切分区间的数值列表或者整数。如果是整数,则表示将数据均匀地分成多少个区间。如果是列表,则需要指定每个区间的边界。 |
| right | 默认True,表示每个区间的右端点是闭区间,即包含右端点。如果设置为False,则左端点为闭区间。 |
| labels | 传入一个列表指定每个区间的标签。 |
df = pd.read_csv("data/employees.csv")# 加载员工数据
df1 = df.iloc[:10]
print(df1["salary"])
salary = pd.cut(df.iloc[9:16]["salary"], 3)
print(salary)
salary = pd.cut(df1["salary"], [0, 10000, 20000])
print(salary)
df['salary_level'] = pd.cut(df["salary"], bins=3, labels=["low", "medium", "high"])
print(df['salary_level'])
df['salary_level'] = pd.cut(df["salary"], bins=[0, 10000, 20000,300000], labels=["low", "medium", "high"])
print(df['salary_level'])
df = pd.read_csv("data/employees.csv")# 加载员工数据
salary = pd.cut(df["salary"], 3)
print(salary.value_counts())
salary2 = pd.qcut(df["salary"], 3)
print(salary2.value_counts())
#睡眠数据分箱
df_sleep = pd.read_csv("data/sleep.csv")
# 将睡眠质量分为3组:差(0-4)、中(4-7)、好(7-10)
bins = [0, 4, 7, 10]
labels = ['差', '中', '好']
df_sleep['quality_level'] = pd.cut(
df_sleep['sleep_quality'],
bins=bins,
labels=labels
)
print(df_sleep[ 'quality_level'])
print(df_sleep[ 'quality_level'].value_counts())
7. 其他常用转换
- df.rename(columns={“score”: “成绩”})
- df.set_index(“name”)
- df.reset_index()
df = pd.DataFrame({"age": [20, 30, 40, 10], "name": ["张三", "李四", "王五", "赵六"], "id": [101, 102, 103, 104]})
print(df)
# age name id
# 0 20 张三 101
# 1 30 李四 102
# 2 40 王五 103
# 3 10 赵六 104
#通过set_index()设置行索引
# inplace=True:这是一个布尔类型的参数。当设为 True 时,会直接在原
# DataFrame上进行修改;若设为 False(默认值),则会返回一个新的
# DataFrame,原DataFrame 保持不变
df.set_index("id", inplace=True) # 设置行索引
print(df)
df.reset_index(inplace=True) # 重置索引
print(df)
#修改行索引名和列名 个别修改
df.rename(index={101: "一", 102: "二", 103: "三", 104: "四"}, columns={"age": "年龄", "name": "姓名"}, inplace=True)
print(df)
#重新赋值 批量修改
df.index = ["Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ"]
df.columns = ["年齡", "名稱"]
#添加列
通过 df[“列名”] 添加列。
df["phone"] = ["13333333333", "14444444444", "15555555555", "16666666666"]
#删除列
# 通过 df.drop(“列名”, axis=1) 删除,也可是删除行 axis=0
df.drop("phone", axis=1, inplace=True) # 删除phone,按列删除,inplace=True表示直接在原对象上修改
print(df)
#通过 del df[“列名”] 删除
del df["phone"]
print(df)
#插入列 通过 insert(loc, column, value) 插入。该方法没有inplace参数,直接在原数据上修改。
df.insert(loc=0, column="phone", v
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











请登录后查看评论内容