pandas 学习汇总7 - 缺失数据( tcy)
发布日期:2021-06-29 14:48:00 浏览次数:3 分类:技术文章

本文共 2613 字,大约阅读时间需要 8 分钟。

缺少数据  2018/12/3
# 用np.nan表示缺失数据。默认不包含在计算中 
dates=pd.date_range('2018-12-02',periods=4)df=pd.DataFrame(np.random.random((4,3)) ,index=dates,columns=list('ABC'))# 实例1:重建索引允许您更改/添加/删除指定轴上的索引。这将返回数据的副本。df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['D'])df1.loc[dates[0]:dates[1],'D'] = 1df1'''A B C D 2018-12-02 0.468678 0.238657 0.402742 1.02018-12-03 0.915191 0.171935 0.883892 1.02018-12-04 0.191612 0.743375 0.649796 NaN2018-12-05 0.355307 0.101217 0.159055 NaN'''
# 实例2:删除任何缺少数据的行 
df.dropna() #删除任意缺失数据df.dropna(axis='columns')#删除列至少有一个nadf.dropna(how='all') #删除行当行全部数据为nadf.dropna(thresh=2) #删除行至少有2个nadf.dropna(subset=['B', 'A'])#在那些A,B列中查找缺失值df.dropna(inplace=True) #删除行后就地修改df1.dropna(axis=1) #删除D列df1.dropna(how='any')'''A B C D2018-12-02 0.468678 0.238657 0.402742 1.02018-12-03 0.915191 0.171935 0.883892 1.0'''
# 实例3:填写缺失的数据
df.fillna(0) #用0填充df.fillna(method='ffill') #向前填充df.fillna(method='bfill') #向后填充df.fillna(value={'A': 0, 'B': 1, 'C': 2, 'D': 3})#不同值填充df.fillna(value=values, limit=1) #限制填充1个df1.fillna(value=-1)''' A B C D2018-12-02 0.468678 0.238657 0.402742 1.02018-12-03 0.915191 0.171935 0.883892 1.02018-12-04 0.191612 0.743375 0.649796 -1.02018-12-05 0.355307 0.101217 0.159055 -1.0
# 实例4:获取值所在的布尔掩码nan 
pd.isna(df1['D'])#df1['D'].isna() # 等价# pd.isnull(df1['D']) # 等价pd.notnull(df1)'''''''''A B C D2018-12-02 True True True True2018-12-03 True True True True2018-12-04 True True True False2018-12-05 True True True False''' 

# 实例5.1:替换丢失(或)通用值 

df.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')s.replace(0, 5) #用5替换0df.replace(0, 5)#用5替换0df.replace([0, 1, 2, 3], 4) # 用4替换0,1,2,3,4df.replace([0, 1, 2, 3], [4, 3, 2, 1])# 4,3,2,1分别替换0,1,2,3s.replace([1, 2], method='bfill') # 后项替换即用3替换1,2df.replace({0: 10, 1: 100}) # 10替换0,100替换1df.replace({'A': 0, 'B': 5}, 100) # A列0,B列5都用100替换df.replace({'A': {0: 100, 4: 400}}) # A列0被100替换,4被400替换df = pd.DataFrame({'one':[10,20,30,40,50,2000],'two':[1000,0,30,40,50,60]})df.replace({1:10,2000:60,30:-30,40:-40})'''''''''one two0 10 101 20 02 -30 -303 -40 -404 50 505 60 60''' 

 # 实例5.2:正则表达式替换

df = pd.DataFrame({'A': ['bat', 'foo', 'bait'],'B': ['abc', 'bar', 'xyz']})df.replace(to_replace=r'^ba.$', value='new', regex=True)#结果同下df.replace(regex=r'^ba.$', value='new')''''''''' A B0 new abc1 foo new2 bait xyz'''df.replace({'A': r'^ba.$'}, {'A': 'new'}, regex=True)'''''''''A B0 new abc1 foo bar2 bait xyz'''df.replace(regex={r'^ba.$':'new', 'foo':'xyz'})'''''''''A B0 new abc1 xyz new2 bait xyz'''df.replace(regex=[r'^ba.$', 'foo'], value='new')'''''''''A B0 new abc1 new new2 bait xyz'''

转载地址:https://chunyou.blog.csdn.net/article/details/84736007 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:pandas 学习汇总8 - Series系列,DataFrame数据帧添加删除(行列)( tcy)
下一篇:pandas 6 - 索引切片选择( tcy)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年05月01日 09时25分08秒