查看DataFrame数据及属性
import pandas as pd
df_obj = pd.DataFrame() #创建DataFrame对象
df_obj.dtypes #查看各行的数据格式
df_obj['列名'].astype(int)#转换某列的数据类型
df_obj.head() #查看前几行的数据,默认前5行
df_obj.tail() #查看后几行的数据,默认后5行
df_obj.index #查看索引
df_obj.columns #查看列名
df_obj.values #查看数据值
df_obj.describe() #描述性统计
df_obj.T #转置
df_obj.sort_values(by=['',''])#同上
为DataFrame添加新的属性列
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 10, (2, 4)), columns=list('ABCD'))
df['total'] = df['A'] + df['B'] + df['C'] + df['D']
# 等价于 df['total'] = df.A + df.B + df.C + df.D
数据类型
df.values ⇒ 返回的是 numpy 下的多维数组; df.column_name.values ⇒ 返回的也是 numpy 下的数组类型; df.dtypes:返回的是各个属性列的类型; df.select_dtypes([np.object]),df.select_dypes([bool])
简单数据统计
统计某一属性可能的取值:df.column_name.unique()
统计出现的次数:df.column_name.value_counts() column_name 对应的是该 DataFrame 中某列的列名;也即 pandas 下的 DataFrame 对象直接支持 点+列名的方式进行索引;
缺失值的处理
所有缺失值字段填充为 0:df.fillna(0),一定要十分注意的一点是,df.fillna() 操作默认(inplace=False)不是 inplace,也即不是对原始 data frame 直接操作修改的,而是创建一个副本,对副本进行修改;
df.fillna(0, inplace=True)df = df.fillna(0) 舍弃那些全行为 NaN 的行,以及全列为 NaN 的行:
df.dropna(axis=[0, 1], how=’all’) 删除某些行和列:
df.drop([], axis=1, inplace=True) ⇒ axis = 1,删除列;df.drop([], axis=0, inplace=True) ⇒ axis = 0,删除行;
首先创建具有缺失值NaN(Not A Number)的CSV(comma-separated values)文件:
import pandas as pd
from io import StringIO
csv_data = '''A,B,C,D
1.0,2.0,3.0,4.0
5.0,6.0,,8.0
0.0,11.0,12.0,'''
df = pd.read_csv(StringIO(csv_data))
删除含缺失值的样本
具体处理方法:
df.isnull()#是缺失值返回True,否则范围False df.isnull().sum()#返回每列包含的缺失值的个数 df.dropna()#直接删除含有缺失值的行 df.dropna(axis = 1)#直接删除含有缺失值的列 df.dropna(how = ‘all’)#只删除全是缺失值的行 df.dropna(thresh = 4)#保留至少有4个缺失值的行 df.dropna(subset = [‘C’])#删除含有缺失值的特定的列
填充缺失值
数值型数值(Numerical Data)
方法一:fillna()函数
df.fillna(0):用0填充 df.fillna(method=‘pad’):用前一个数值填充 df.fillna(df2.mean()):用该列均值填充
均值填充
age_mean = data.Age.mean()
# age_mean = data['Age'].mean()
data.Age[data['Age'].isnull()] = age_mean
# data['Age'] == data