首页 > 其他分享 >Pandas -----------------------基础知识(三)

Pandas -----------------------基础知识(三)

时间:2024-09-23 23:49:21浏览次数:9  
标签:朝向 df inplace 基础知识 ----------------------- print new copy Pandas

  • dataframe添加列 
  • 删除行与列
  • 去重
  • 修改列
  • 自定义函数

加载数据

import pandas as pd

# 加载数据集 ./data/b_LJdata.csv
df = pd.read_csv('./data/b_LJdata.csv').head(10)
df

dataframe添加列 

在后面追加


df['城市'] = '北京'
df

df['区县'] = ['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区','朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区']
df

df['新价格'] = df['价格'] + 1000
df

添加列  恢复df为初始十列

先获取区域索引 在区域后面一列插入城市

area_index = df.columns.get_loc('区域')
print(area_index)

df.insert(loc=area_index+1,column='区县',value=['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区','朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'])
print(df)

price_index = df.columns.get_loc('价格')
print(price_index)

df.insert(loc=price_index+1,column="新价格",value=df['价格']+1000)
print(df)

删除行与列

删除默认删除行 不修改原始数据

源数据

copy_df = df.head().copy()
copy_df

删除索引为1 的这行数据  0 是按行删 不修改原始数据
new_df = copy_df.drop(labels=[1], axis=0, inplace=False)
new_df

删除索引为1和3的 这行数据 修改原始数据
copy_df  = df.head().copy()
new_df = copy_df.drop(labels=[1,3], axis=0, inplace=True)
copy_df

删除多列 修改原始数据
copy_df = df.head().copy()
new_df = copy_df.drop(labels=['区域','地址','户型'], axis=1, inplace=True)
print(new_df)
print("==========================================")
print(copy_df)

去重

dataframe去重


默认 对 所有列去重 keep为first  不影响原始数据
对 '户型', '朝向' 去重, 保留第一条, 不影响原始数据

copy_df = df.head().copy()

new_df = copy_df.drop_duplicates(subset=['户型', '朝向'], keep='first', inplace=False)
print(new_df)
print("===========================================")
print(copy_df)

对 '户型', '朝向' 去重, 保留最后一条, 影响原始数据
copy_df = df.head().copy()

new_df = copy_df.drop_duplicates(subset=['户型', '朝向'], keep='last', inplace=True)
print(new_df)
print("===========================================")
print(copy_df)

 对 '户型', '朝向' 去重, 删除所有重复数据, 影响原始数据
copy_df = df.head().copy()

new_df = copy_df.drop_duplicates(subset=['户型', '朝向'], keep=False, inplace=True)
print(new_df)
print("===========================================")
print(copy_df)

Series去重

默认保留第一条 不修改原始数据

对 朝向 构成的 Series对象 去重, 保留最后一条, 不影响原始对象
copy_df = df.head().copy()
new_series = copy_df['朝向'].drop_duplicates(keep='last', inplace=False)
print(new_series)
print("===========================================")
print(copy_df['朝向'])

对朝向 构成的 Series对象 去重, 删除所有重复, 不影响原始对象
copy_df = df.head().copy()
new_series = copy_df['朝向'].drop_duplicates(keep=False, inplace=False)
print(new_series)
print("===========================================")
print(copy_df['朝向'])

对 朝向 构成的 Series对象 去重, 保留第一条, 影响原始对象
copy_df = df.head().copy()
new_series = copy_df['朝向'].drop_duplicates(keep='first', inplace=True)
print(new_series)
print("===========================================")
print(copy_df['朝向'])

修改列

加载数据

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df

第一行age列修改为30

df.loc[0, 'Age'] = 30
df

# 也可以使用条件赋值来修改部分值
# df['Name']=='Bob'
df.loc[df['Name']=='Bob', 'Age'] = 66
df

df['Name'].replace(to_replace='Alice', value='Alice_new', inplace=True)
df
#法二 
# df['Name'] = df['Name'].replace(to_replace='Alice', value='Alice_new', inplace=False)
# df

# 将 Age 列中小于 31 的值改为 29
df['Age'].where(df['Age']>=31, 29, inplace=True)
df

df['Age'].mask(df['Age']>=30, 66, inplace=True)
df

案例

import pandas as pd

# 加载数据集 ../data/b_LJdata.csv
df = pd.read_csv('./data/b_LJdata.csv')
df
copy_df = df.head().copy()
print('============修改前===================')
print(copy_df)

# copy_df.loc[0, '价格'] = 8000
# copy_df.iloc[0, 4] = 8000
price_index = df.columns.get_loc('价格')
copy_df.iloc[0, price_index] = 8000

print('价格下标: ', price_index)

print('============修改后===================')
print(copy_df)

标签:朝向,df,inplace,基础知识,-----------------------,print,new,copy,Pandas
From: https://blog.csdn.net/weixin_54353942/article/details/142467154

相关文章

  • DeiT:Data-efficient Image Transformer(2020)
    Trainingdata-efficientimagetransformers&distillationthroughattention:通过注意力训练数据高效的图像转换器和蒸馏论文地址:https://arxiv.org/abs/2012.12877代码地址:https://github.com/facebookresearch/deit这篇论文在2020年12月23日首次提交,也就是在ViT提......
  • C语言-“角谷猜想”是指:对任意自然数使用下面的方法计算得到一个新数;对这个新数继续使
     ......
  • 9.Branch-and-Bound 方法
    Branch-and-Bound方法Branch-and-Bound(分支限界)是一种用于解决优化问题的算法框架,尤其适用于组合优化问题,如整数规划、旅行商问题(TSP)、指派问题等。该方法通过系统地搜索解空间树来找到问题的最优解或近似解。基本概念Branch-and-Bound方法的核心在于分支(Branching)和......
  • 用Podman搭建LAMP开发环境的容器(五) -- 端口转发
    上接:用Podman搭建LAMP开发环境的容器(四)–使用VSCode今天接着折腾前几天的VSCode配置。虽然现在看着好像是差不多了,也可以在VSCode上面编写代码了。但是还有一个很大的问题:容器中Apache服务的端口并没有映射到本地,所以现在用浏览器不能访问我写的页面,也不能访问phpMyAdmi......
  • 数据结构-线性表的单链式存储结构图解及C语言实现
    概念链式存储:结点在存储器中的位置是任意的,即逻辑相邻的数据元素在物理上不一定相邻链式存储结构也称非顺序映像或链式映像图解链式存储结构中结点一般有两个部分组成,即数据域(data)和指针域,数据域是用于存放数据的,指针域是用来指向下一结点的地址的,其中头节点指向该链表......
  • 【数据结构和算法实践-排序-归并排序】
    数据结构和算法实践-排序-归并排序题目MyThought代码示例JAVA-8题目排序MyThought然后再进行递归,递归要注意两个方面:一、自我调用二、终止条件:即函数边界注意点:树、递归*代码示例JAVA-8publicclassMergeSort{publicstaticvoidmergeSor......
  • 蓝桥杯3-好数
    #include<iostream>usingnamespacestd;boolcheck(intx){intwei=1;//用于计算位数while(x){intb=x%10;//b表示对应位数的数字if(wei%2==1)//如果是奇数位{if(b%2==0)//如果奇数位是偶数,返回为假......
  • Python背记内容-2day
    Python运算符运算符描述[][:]下标,切片**指数~+-按位取反,正负号*/%//乘,除,模,整除+-加,减>><<右移,左移&按位与^|按位异或,按位或<=<>>=小于等于,小于,大于,大于等于==!=等于,不等于isisnot身份运算符innotin成......
  • C++学习笔记(三)-----【内联函数】
    1内联函数1.1为什么要有内联函数答:还是为了补C语言的坑,补宏的坑#defineN10//实现一个ADD的宏函数//错误写法#defineADD(intx,inty){returnx+y;}#defineADD(x,y){returnx+y;}#defineADD(x,y)returnx+y;#defineADD(x,y)x+y;//宏不需......
  • Python背记内容-1day
    变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。硬性规则:规则1:变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊......