什么是Pandas?
处理高级数据结构、用于数据分析的Python库。
Pandas的特点
- 基于Numpy 构建的一种工具;
- 基础数据类型是DataFrame;
数据预处理
使用info查看空值
import pandas as pd
demo1 = pd.read_csv('DataDemo1.csv',encoding='utf-8')
demo1.info()
使用isnull查看空值
import pandas as pd
demo1 = pd.read_csv('DataDemo1.csv',encoding='utf-8')
# 使用isnull查看空值
print(demo1.isnull())
删除空值
# -*- coding: utf-8 -*-
import pandas as pd
demo1 = pd.read_csv('DataDemo1.csv',encoding='utf-8')
print(demo1)
print("---------有一行为空就被删除-----------------")
print(demo1.dropna())
print("--------一行全部为空才删除------------------")
print(demo1.dropna(how='all'))
print("--------性别、注册时间为空才被删除------------------")
print(demo1.dropna(subset=["性别","注册时间"]))
填充空值
# -*- coding: utf-8 -*-
import pandas as pd
demo1 = pd.read_csv('DataDemo1.csv',encoding='utf-8')
print(demo1)
print("---------所有空值填充0-----------------")
print(demo1.fillna(0))
print("---------编号为空填充 A, 性别为空填充 未知-----------------")
print(demo1.fillna({"编号":"A","性别":"未知"}))
apply 与 applymap 函数
apply
对DataFrame而言,apply是非常重要的数据处理方法,它可以接收各种各样的函数(Python内置的或自定义的),处理方式很灵活,下面通过几个例子来看看apply的具体使用及其原理。
在进行具体介绍之前,首先需要介绍一下DataFrame
中axis
的概念,在DataFrame
对象的大多数方法中,都会有axis
这个参数,它控制了你指定的操作是沿着0轴还是1轴进行。axis=0
代表操作对列columns
进行,axis=1
代表操作对行row
进行,如下图所示。
如果还不是很了解,没关系,下面会分别对apply
沿着0轴以及1轴的操作进行讲解,继续往下走。
例子1:数据按列求和;
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
dataDf = pd.read_csv('data.csv',encoding='utf-8')
print(dataDf)
sumDf = dataDf[["height","weight","age"]].apply(np.sum,axis=0)
print("----------------------------------")
print(sumDf)
运行结果如下:
例子2:数据按行求和;
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
dataDf = pd.read_csv('data.csv',encoding='utf-8')
print(dataDf)
sumDf = dataDf[["height","weight","age"]].apply(np.sum,axis=1)
print("----------------------------------")
print(sumDf)
运行结果如下:
例子3:利用自定义函数,将前两列数据相加;
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
dataDf = pd.read_csv('data.csv',encoding='utf-8')
print(dataDf)
def BMI(series):
height = series["height"]
weight = series["weight"]
return height + weight
dataDf['sum'] = dataDf[["height","weight"]].apply(BMI,axis=1)
print("----------------------------------")
print(dataDf)
运行结果如下:
applymap
applymap的用法比较简单,会对DataFrame中的每个单元格执行指定的函数;虽然用途不如apply广泛,但是在某些场合下还是比较有用;
# -*- coding: utf-8 -*-
import pandas as pd
dataDf = pd.read_csv('data.csv',encoding='utf-8')
print(dataDf)
dataDf01 = dataDf.applymap(lambda x:x+1)
print("---------------------------------------------")
print(dataDf01)
运行结果如下: