《利用python进行数据分析》之处理缺失数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mr_muli/article/details/84145926
  • 《利用python进行数据分析》之处理缺失数据
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 16 19:50:08 2018

@author: muli
"""

from pandas import Series,DataFrame
import pandas as pd
import numpy as np


#处理缺失数据
#处理缺失数据(missing data)在大部分的数据分析应用中很常见.
#pandas的设计目标之一就是让缺失数据的处理任务尽量轻松。
#pandas使用浮点数NaN(Not a Number)表示浮点和非浮点数组中的缺失数据。
#只是一个便于检测出来的标记而已:

string_data=Series(['aardvark','arrichoke',np.nan,'avocado'])
print(string_data)
print("------------------")
print(string_data.isnull())


print("------------------")
string_data[0]=None
print(string_data.isnull())

print("------******----------")

#滤除缺失数据
#对于一个Series,dropna返回一个仅含有非空数据的和索引值的Series:
from numpy import nan as NA
#返回一个仅含有非空数据的和索引值的Series
data=Series([1,NA,3.5,NA,7])
print(data.dropna())
print("--------------")
#还可以通过布尔型索引达到这个目的:
print(data[data.notnull()])

print("******************")

#对于DataFrame对象,如果希望丢弃全NA或NA的行或列,
#dropna默认丢弃任何含有缺失值的行:

data=DataFrame([[1.,6.5,3.],
                [1.,NA,NA],
                [NA,NA,NA],
                [NA,6.5,3.]])

print(data)
print("----------------")
#默认丢弃任何含有缺失值的行
cleaned=data.dropna()
print(cleaned)


print("-----")

# 传入how="all" 将只丢弃全为NA的那些行:
data_hang=data.dropna(how='all')
print(data_hang)
print("----")
print(data.ix[3])
print("****")

# 单独提取列时,此表达方法出错
#print(data[3])

# 对指定列进行赋值操作
# []内的数字,为列的名字,若名字已经存在,则值覆盖;
# 否则,作为列名直接进行赋值
data[4]=NA

# 对指定行 进行操作
# []内的数字,为行的名字,若名字已经存在,则值覆盖;
# 否则,作为行名直接进行赋值
data.ix[0]=NA
print(data)
print("---------------")

#要用这种方式丢弃列,只需传入axis=1即可
#  1 -- 列
data2=data.dropna(axis=1,how='all')
print(data2)

print("--------")

#另一个滤出DataFrame行的问题涉及时间序列数据。
#假设你只想留下一部分观测数据,可以用thresh参数实现此目的:
df=DataFrame(np.random.randn(7,3))
print(df)

df.ix[:4,1]=NA;
df.ix[:2,2]=NA
print(df)

print("-----")

# 假设你只想留下一部分观测数据,可以用thresh参数实现此目的:
# 默认是针对行
# thresh=num
# 每行非空数据 >= num ,即可满足要求,可留下
th_df=df.dropna(thresh=3)
print(th_df)

猜你喜欢

转载自blog.csdn.net/mr_muli/article/details/84145926
今日推荐