Pandas-数据整理
Pandas包对数据的常用整理功能,相当于数据预处理(不包括特征工程)
目录
- 丢弃值
- drop()
- 缺失值处理
- isnull() & notnull()
- dropna()
- fillna()
- 值替换
- replace()
- get_dummies()
- 重复值处理
- duplicated()
- is_unique()
- unique()
- drop_duplicated()
- 排序&排名
- sort_index()
- rank()
- 索引设置
- reindex()
- set_index()
- reset_index()
- stack() & unstack()
- 修改列名
丢弃值
- drop()
- 一般用于丢弃DataFrame里的列columns,但切片功能效果相同,根据实际使用,好处是节约内存
- 一般用于丢弃DataFrame里的列columns,但切片功能效果相同,根据实际使用,好处是节约内存
# 按列(axis=1),丢弃指定label的列
df.drop(labels, axis=1)
缺失值处理
- isnull() & notnull() 判断空值
df.isnull()
s.isnull()
s.isnull().value_counts() - dropna() 丢弃缺失值
# 默认axi=0,how=‘any’,按行,任意一行有NaN就整列丢弃
df.dropna()
df.dropna(axis=1)
# 一行中全部为NaN的,才丢弃
df.driopna(how='all')
# 保留至少3个非空值的行:一行中有3个值是非空的就保留
df.dropna(thresh=3) - fillna() 缺失值填充
df.fillna(0)
值替换
- replace()
# 将df的A列中 -999 全部替换成空值
df["A"].replace(-999, np.nan) #-999和1000 均替换成空值
obj.replace([-999,1000], np.nan) # -999替换成空值,1000替换成0
obj.replace([-999,1000], [np.nan, 0]) # 同上,写法不同,更清晰
obj.replace({-999:np.nan, 1000:0})
重复值处理
- duplicated()
# 返回布尔向量、矩阵
s.duplicated()
df.duplicated() - unique()
# 返回唯一值的数组
df["A"].unique() - drop_duplictad()
# 保留k1列中的唯一值的行,默认保留第一行
df.drop_duplicated(["k1"]) # 保留 k1和k2 组合的唯一值的行,take_last=True 保留最后一行
df.drop_duplicated(["k1","k2"], take_last=True)
排序&排名
- sort_index()
- 索引排序
# 默认axis=0,对行进行排序;ascending=True,升序排序
s.sort_index()
df.sort_index() # 对列进行排序,ascending=False 降序
df.sort_index(axis=1, ascending=False)
- 索引排序
- 值排序
# 按值对Series进行排序,使用order(),默认空值会置于尾部
s = pd.Series([4, 6, np.nan, 2, np.nan])
s.order() # DataFrame可根据一个或多个值进行排序
df.sort_index(by="A")
df.sort_index(by=["A","B"])
- 值排序
- rank()
索引设置
- reindex()
- 更新index或者columns,
- 默认:更新index,返回一个新的DataFrame
# 返回一个新的DataFrame,更新index,原来的index会被替代消失
# 如果某个索引值不存在,会自动补上NaN
df2 = df1.reindex(['a','b','c','d','e']) # fill_valuse为原先不存在的索引补上默认值,不在是NaN
df2 = df1.reindex(['a','b','c','d','e'], fill_value=0) # inplace=Ture,在DataFrame上修改数据,而不是返回一个新的DataFrame
df1.reindex(['a','b','c','d','e'], inplace=Ture) # reindex不止可以修改 索引(行),也可以修改列
states = ["Texas","Utah","California"]
df2 = df1.reindex( columns=states )- set_index()
- 将DataFrame中的列columns设置成索引index、
- 打造层次化索引的方法
# 将columns中的其中两列:race和sex设置索引,race为一级,sex为二级
# inplace=True 在原数据集上修改的
adult.set_index(['race','sex'], inplace = True) # 默认情况下,设置成索引的列会从DataFrame中移除
# drop=False将其保留下来
adult.set_index(['race','sex'], inplace = True)- reset_index()
- 将使用set_index()打造的层次化逆向操作
- 既是取消层次化索引,将索引变回列,并补上最常规的数字索引
adult.reset_index()
修改列名
df.rename(columns = {'库存数量':'12月20日库存数量'},inplace=True)
Pandas-数据整理的更多相关文章
- Pandas数据处理实战:福布斯全球上市企业排行榜数据整理
手头现在有一份福布斯2016年全球上市企业2000强排行榜的数据,但原始数据并不规范,需要处理后才能进一步使用. 本文通过实例操作来介绍用pandas进行数据整理. 照例先说下我的运行环境,如下: w ...
- 一些用于数据整理的excel函数
我们经常要从外部数据源(如数据库.文本文件或网页等)将数据导入excel中,但是此类数据往往比较混乱,无法满足我们的要求,因此在进行数据分析之前,需要将这些数据进行整理清洗,excel由于将数据的管理 ...
- 评教数据整理专用VBA小程序
这次评教的所有数据存放在两个数据库中,比如说给某教师评论的学生有100个,可是结果有40个的数据在数据库A中,另外60人的数据在数据库B中.那么,如何将两个库中的数据整合,最后得到教师的准确成绩成为了 ...
- 数据分析与展示——Pandas数据特征分析
Pandas数据特征分析 数据的排序 将一组数据通过摘要(有损地提取数据特征的过程)的方式,可以获得基本统计(含排序).分布/累计统计.数据特征(相关性.周期性等).数据挖掘(形成知识). .sort ...
- pandas小记:pandas数据输入输出
http://blog.csdn.net/pipisorry/article/details/52208727 数据输入输出 数据pickling pandas数据pickling比保存和读取csv文 ...
- Pandas数据排序
Pandas数据排序 .sort_index() 在指定轴上根据索引进行排序,索引排序后内容会跟随排序 b = pd.DataFrame(np.arange(20).reshape(4,5),inde ...
- pandas数据操作
pandas数据操作 字符串方法 Series对象在其str属性中配备了一组字符串处理方法,可以很容易的应用到数组中的每个元素 t = pd.Series(['a_b_c_d','c_d_e',np. ...
- Pandas数据存取
pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']) Pandas数据存取 Pandas可以存取多种介质类型数据, ...
- pandas 数据预处理
pandas 数据预处理 缺失数据处理 csv_data=''' A,B,C,D 1.0,2.0,3.0,4.0 5.6,6.0,,8.0 0.0,11.0,12.0,,''' import pand ...
- Pandas数据规整
Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...
随机推荐
- Android应用源码基于安卓的个人隐私监控项目
本系统借鉴了现有安全软件的优点,设计了权限访问监控.流量监控.应用程序危险度监控和签名验证四个功能模块,同时针对现有安全软件的不足之处,对系统进行改进,让权限访问.流量监控.危险值等以图形化的方式呈现 ...
- 【小白的CFD之旅】12 敲门实例【续2】
接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...
- 架构实例之Demo_JSP_JavaBean
架构实例之Demo_JSP_JavaBean 1.开发工具和开发环境 开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.1 ...
- 《InsideUE4》GamePlay架构(十)总结
世界那么大,我想去看看 引言 通过对前九篇的介绍,至此我们已经了解了UE里的游戏世界组织方式和游戏业务逻辑的控制.行百里者半九十,前述的篇章里我们的目光往往专注在于特定一个类或者对象,一方面固然可以让 ...
- tomcat配置SSL双向认证
一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全? ...
- 洛谷P1288 取数游戏II[博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- PHP代码重用与函数编写
代码重用与函数编写 1.使用require()和include()函数 这两个函数的作用是将一个文件爱你载入到PHP脚本中,这样就可以直接调用这个文件中的方法.require()和include()几 ...
- 第1章 重构,第一个案例(2):分解并重组statement函数
2. 分解并重组statement (1)提炼switch语句到独立函数(amountFor)和注意事项. ①先找出函数内的局部变量和参数:each和thisAmount,前者在switch语句内未被 ...
- Linux操作系统启动流程梳理
接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下 ...
- Mysql优化系列(2)--通用化操作梳理
前面有两篇文章详细介绍了mysql优化举措:Mysql优化系列(0)--总结性梳理Mysql优化系列(1)--Innodb引擎下mysql自身配置优化 下面分类罗列下Mysql性能优化的一些技巧,熟练 ...