pandas过滤缺失值

import pandas as pd
import numpy as np
obj=pd.Series(range(5),index=['a','a','b','b','c'])
print(obj)
print(obj.index.is_unique)#是够是唯一值
print(obj['b'])
print(obj['c'])
print(obj[['a','b']])#输出多个列
print(obj.values)#数组
print(obj.value_counts())#出现频次
print('==========================')
df=pd.DataFrame(np.random.randn(4,3),index=['a','a','b','b'])
print(df)
print(df.loc['a'])#行索引

df=pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=['a','b','c','d'],columns=['one','two'])
print(df)
print(df[df['one']==1.4])#过滤
arr=np.arange(10).reshape(2,5)
print(np.sum(arr))
print(df.sum())#每列求和
print(df.sum(axis=1))#行求和
print(df.sum(axis=1,skipna=False))#保留nan值
print(df.idxmax())#最大值索引
print(df.cumsum())#累计和
print(df.describe())#整体统计
print('==========================')
obj=pd.Series(['a','b','c','d','a'] * 4)
print(obj.describe())
print(obj.head())#前5行
print(obj.tail())#后5行
obj=pd.Series(['c','a','d','a','a','b','b','c','c'])
print(obj.unique())#唯一值
a=obj.unique()
print(np.sort(a))#排序
print(obj.value_counts())#频次数
print(pd.value_counts(obj.values,sort=False))
print(pd.value_counts(obj.values))
mask=obj.isin(['b','c'])
print(mask)#是否是子集
print(obj[mask])#输出子集
print('===================================')
from numpy import nan as NA
data=pd.Series([1,NA,3.5,NA,7])
print(data.dropna())#过滤缺失值
print(data[data.notnull()])#等价于上面
data=pd.DataFrame([[1,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3]])
print(data.dropna())
print(data.dropna(how='all'))#过滤全是nan值行
print(data.dropna(axis=1,how='all'))#过滤列
print(data.dropna(thresh=3))#至少有3个非nan值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pandas中,可以使用fillna()函数来填充缺失值。该函数的主要参数包括value、method、axis、inplace、limit等。其中,value参数用于指定填充的值,method参数用于指定填充的方法,axis参数用于指定填充的方向,inplace参数用于指定是否在原数据上进行填充,limit参数用于指定每列或每行连续填充的最大数量。 例如,可以使用向前填充(ffill)的方法来填充缺失值。首先,将DataFrame中的缺失值替换为NaN,然后使用fillna()函数进行填充。可以使用df.fillna(value=None, method='ffill', axis=0, limit=None)来实现列向前填充。同样地,可以使用向后填充(bfill)的方法来填充缺失值。可以使用df.fillna(value=None, method='bfill', axis=0, limit=None)来实现列向后填充。\[2\] 需要注意的是,向前填充和向后填充都无法填充首行和末行的缺失值。为了解决这个问题,可以先使用向前填充,然后再使用向后填充的方法进行填充。这样可以保证所有的缺失值都得到填充。\[3\] 以下是一个完整的示例代码,展示了如何使用pandas填充缺失值: ```python import pandas as pd import numpy as np # 读取数据 data = pd.read_excel("待填充数据.xlsx", sheet_name="房间数", index_col="月份") # 将0值转化为空值 data\[data == 0\] = np.nan # 过滤空值过多的列 df = data.dropna(axis=1, thresh=11, subset=None, inplace=False) # 列向前填充 df1 = df.fillna(value=None, method='ffill', axis=0, limit=None) # 列向后填充,避免首行空值 df2 = df.fillna(value=None, method='bfill', axis=0, limit=None) # 将结果保存到Excel文件 df2.to_excel("清洗填充结果.xlsx") ``` 这段代码首先读取了一个Excel文件中的数据,然后将其中的0值替换为NaN。接着,过滤空值过多的列,然后使用向前填充和向后填充的方法进行缺失值的填充。最后,将填充后的结果保存到了另一个Excel文件中。\[3\] #### 引用[.reference_title] - *1* *2* [pandas缺失值填充](https://blog.csdn.net/weixin_46969441/article/details/119859689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pandas空值填充](https://blog.csdn.net/zengbowengood/article/details/103033654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值