#导入pandas包并设置别名为pd
import pandas as pd
#读取csv格式文件并把格式设置为DataFrame格式
df=pd.read_csv("1.csv");
print(df)
print("-"*80)
#删除空值
#作用:只要一行中出现了空值(NaN)就会把这整行数据都删除。
df1=df.dropna()
print(df1)
print("-"*80)
#dropna方法中常用的参数值
#语法如下:
# pd.DataFrame.dropna(axis=0,how="any",thresh=None,subset=None,inplace=False)
#1、axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
#2、how:默认为 'any' 如果一行(或一列)里有一个数据有出现 NA 就去掉整行,
# 如果设置 how='all' 一行(或列)全部都是 NA 才去掉这整行。
#3、thresh:设置需要多少非空值的数据才可以保留下来的。
#4、subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
#5、inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。
#判断指定列的空值,返回类型为布尔类型
print(df["NUM_BEDROOMS"].isnull())
print("-"*80)
#指定值内容
missing_value=["n/a","na","--","NaN"]
df=pd.read_csv("1.csv",na_values=missing_value)
#删除指定值
#这里增加一项权限,可以修改源数据。不加的话程序不会执行删除指定值
df.dropna(inplace=True)
print(df)
print("-"*80)
#判断某几列是否有空值有就删除,并且覆盖源数据。
df.dropna(subset=["PID","ST_NUM"],inplace=True)
print(df)
print("-"*80)
#指定值内容
missing_value=["n/a","na","--","NaN"]
df=pd.read_csv("1.csv",na_values=missing_value)
#替换指定值内容(把上面指定的值替换成123) --全部
# df.fillna(123,inplace=True)
#------------------------------------------------------------
# 填冲指定的某几列,值为列名,填充值为123 --指定
df["ST_NUM"].fillna(123,inplace=True)
print(df)
print("-"*80)
#指定值内容
missing_value=["n/a","na","--","NaN"]
df=pd.read_csv("1.csv",na_values=missing_value)
#获取指定列的平均数
avg=df["ST_NUM"].mean()
#把空值设置成avg值的内容(某一列的平均数)
df["ST_NUM"].fillna(avg,inplace=True)
print(avg)
print(df)