一、介绍
pandas作为python的一个常用扩展库,其基础是numpy,numpy是一个运行速度非常快的数学库,主要用于数组计算,而pandas使数据预处理、清洗、分析工作变得更快更简单,主要用于数据分析。Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
二、数据类型
pandas有两种数据类型:
Series
series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。
pandas.Series( data, index, dtype, name, copy)
-
data:一组数据(ndarray 类型)。
-
index:数据索引标签,如果不指定,默认从 0 开始。
-
dtype:数据类型,默认会自己判断。
-
name:设置名称。
-
copy:拷贝数据,默认为 False。
示例:
import pandas as pd
data = [1, 2, 3]
index = [2,3,4]
myvar = pd.Series(data,index)
print(myvar)
输出:
2 1
3 2
4 3
dtype: int64
DataFrame
- DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
pandas.DataFrame( data, index, columns, dtype, copy)
-
data:一组数据(ndarray、series, map, lists, dict 等类型)。
-
index:索引值,或者可以称为行标签。
-
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
-
dtype:数据类型。
-
copy:拷贝数据,默认为 False。
示例:
import pandas as pd
data = [['zhangsan',20],['lisi',21],['wangma',23]]
columns = ['name','Age']
df = pd.DataFrame(data,columns=columns)
print(df)
输出:
name Age
0 zhangsan 20
1 lisi 21
2 wangma 23
三、CSV文件处理
函数名 | 功能 | 注 |
---|---|---|
pandas.read_csv('file') | 读取csv文件 | 返回类型DataFrame |
pandas.read_excel('file') | 读取excel文件 | 返回类型DataFrame |
df.to_csv('file') | 将DataFrame保存为csv文件 | |
df.to_excel('file') | 将DataFrame保存为excel文件 |
四、数据处理
- df:DataFrame类型数据
函数名 | 功能 | 备注 |
---|---|---|
df.head(n) | 读取df前n(默认5)行 | |
df.tail(n) | 读取df末尾n(默认5)行 | |
df.describe() | 获取描述统计信息 | |
df.info() | 获取df的基本信息 | |
df.mean() | 求均值(默认按行) | 传参axis=1按列 |
df.median() | 求中位数(默认按行) | 传参axis=1按列 |
df.sum() | 求和(默认按行) | 传参axis=1按列 |
df.loc[] | 按索引获取值 | |
df.iloc[] | 按位置获取值 | |
df[] | 按列名获取值 | |
df.shape | 获取行列 | 属性,非方法 |
df.drop[] | 删除数据 | |
df.duplicated() | 判断是否有重复 | |
df.drop_duplicated() | 删除重复 | inplace=True |
df[] | 按列名获取值 |
五、数据清洗
1、重命名
#行,列重命名
df.rename( mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)
- mapper:dict-like or function,方法
- index:dict-like or function,指定哪个索引
- columns:dict-like or function,指定哪个列名,一般是字典形式,如:{'name':‘姓名’},name是要替换的久列名,姓名是替换后的列名
- axis:{0 or ‘index’, 1 or ‘columns’}, default 0,如果参数中出现了columns而没有出现index,则axis默认等于1,其实这个参数一般不用我们自己设置
- copy:bool, default True
- inplace:bool, default False :是否覆盖原来的数据
- level:int or level name, default None
- errors:{‘ignore’, ‘raise’}, default ‘ignore’
示例:
import pandas as pd
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
df.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)
print(df)
输出:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
2、缺省值删除
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
- axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
- how:默认为 'any' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all' 一行(或列)都是 NA 才去掉这整行。
- thresh:设置需要多少非空值的数据才可以保留下来的。
- subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
- inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。
示例:
new_df = df.dropna()
df.dropna(subset=[inplace = True)
df.dropna(subset=['ST_NUM'], inplace = True) #去除'ST_NUM'列有空值的行
df.fillna(123, inplace = True) #将空值替换为123