pandas详细介绍

1 pandas官网

1.1 官网

https://pandas.pydata.org/

1.2 其他可用网站

2 pandas 概要介绍

Pandas 库是一个免费、开源的第三方 Python 库,是Python数据分析必不可少的工具之一。其基于numPy 库开发而来, 提供了两种数据结构,Series(一维数组结构)与 DataFrame(二维数组结构),这两种数据结构极大地增强的了 Pandas 的数据分析能力。

3 pandas之Series

3.1 概要说明

3.1.1 说明

Series是pandas中最基本的对象,类似于一维数组。实际上它就是基于numpy的一维数组ndarray发展而来的。但区别在于它提供了index,索引。

3.1.2 Series与list、ndarray区别

  • list列表
    列表中的元素可以是不同的数据类型,使用从0开始的整数值作为默认索引;

  • ndarray数组
    数组中的元素必须是同种数据类型,也是使用从0开始的整数值作为默认索引;

  • Series序列
    是一种一维的结构,类似于一维列表和ndarray中的一维数组,但是功能比他们要更为强大,Series由两部分组成:索引index和数值values;

  • 区别
    一维列表和一维数组中都是采用从0开始的整数值作为默认索引,索引值一般不显示的给出,但是我们可以通过索引去获取其中的元素。对于Series来说,默认索引也是从0开始的整数值作为默认索引,但是是显示地给出,更为强大的是,Series中的索引可以随意设置,方便我们取数
    在这里插入图片描述

3.2 创建方式

通过构造函数来创建:
Series([data, index, dtype, name, copy, ...])

具体说来data的几种形式:

3.2.1 通过列表创建

my_list = [1,3,4,2]
se1 = pd.Series(my_list,index=list('abcd'),dtype=np.float32)

3.2.2 通过ndarray创建

my_array = np.arange(1,6)
se2 = pd.Series(my_array)

3.2.3 通过range创建

se3=pd.Series(range(0,10))

3.2.4 通过字典创建

x = dict(a=22,b=10,c=5)
y = pd.Series(x)

3.2 常用属性

se3=pd.Series(range(0,10)) #定义

  • se3.values 获取值:#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64)
  • se3.dtype 返回类型:#dtype(‘int64’)
  • se3.shape 返回元组,包括形状: #(10,)
  • se3.nbytes 返回字节个数#80
  • se3.ndim 返回维数 #1
  • se3.size 返回数据个数 #个数
  • se3.empty 是否为空,true or false

3.2 常见函数

3.2.1 取值

定义: se3=pd.Series(range(3,10),index=list(‘abcdefg’))

  • se3.at[‘a’] #返回某index的某数
  • se3.iat[0] #返回某位置的某数
  • se3.loc[[‘a’,‘b’]] #返回某index们的某数
  • se3.iloc[0:3] #返回某位置们的某数
  • se3.iloc[[0,1,2]] #返回某位置们的某数
  • se3.keys().to_list() #[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]#返回所有index
  • se3.items()
    #所有的items(index和value的元组们)
    举例:
    for index,value in se3.items():
    print(“index is {},value is{}\n”.format(index,value))

3.2.2 计算

加、减、乘、除、取余、乘方、取模、均值等各种运算

3.2.3 将函数传递过去、分组、window(没写)

(1) Series.apply
Series.apply(func, convert_dtype=True, args=(), **kwargs)
将series的values应用于函数,传过去的应该是所有的values
(2) Series.agg,或者Series.aggregate
Series.agg(func=None, axis=0, *args, **kwargs)
也是计算,比如pd.Series([1, 2, 3, 4]).agg(‘min’)
(3) Series.transform(func, axis=0, *args, **kwargs)
其中func可以为系统提供函数,也可以为自定义函数等,也可以为各种函数的组合。
(4)Series.map
Series.map(arg, na_action=None),传递的参数可以是dict等
比如:
s = pd.Series([‘cat’, ‘dog’, np.nan, ‘rabbit’])
s.map({‘cat’: ‘kitten’, ‘dog’: ‘puppy’})
就会输出:

	s.map({'cat': 'kitten', 'dog': 'puppy'})
	0   kitten
	1    puppy
	2      NaN
	3      NaN
	dtype: object

(5) Series.groupby

Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)
ser.groupby(["a", "b", "a", "b"]).mean()
ser.groupby(level=0).mean()
ser.groupby(ser > 100).mean()
ser.groupby(level=0, dropna=False).sum()

3.2.4 series元素状态获取

  • Series.all() 是否所有的元素均为true

  • Series.any(),是否有元素为true

  • Series.between(left,right),是否各个元素都在left和right之间

  • Series.count() 返回非nan的个数

  • Series,max,mean,median,min,nlargest(n),nsmallest(n),sum
    返回的分别是序列中的最大值、平均值、中值、最小值、最大的n个值、最小的n个值、和等

  • Series.value_counts() 返回的是一个series,存储的原series中的各个元素和出现的次数。

3.2.5 重新组合、排序等操作

  • Series.align(other[, join, axis, level, …]) 合并series
  • Series.drop([labels, axis, index, columns, …]) 移除某元素
  • Series.drop_duplicates([keep, inplace]) 移除重复元素
  • Series.duplicated([keep]) 各元素是否是重复元素
  • Series.equals(other) 是否完全相同
  • Series.head([n]) 前n行
  • Series.isin(values) 值是否在values中
  • Series.idxmax([axis, skipna]) 最大值的序号
  • Series.idxmin([axis, skipna]) 最小值的序号
  • Series.reindex([index]) 按照index重新展示表
  • 其他一些,参见手册

3.2.6 丢失数据处理

(1) 判断是否为na

  • Series.isna() 各元素是否为na
  • Series.isnull() 各元素是否为na
  • Series.notna() 各元素是否为na
  • Series.notnull() 各元素是否为na
  • Series.dropna([axis, inplace, how]) 扔掉na的剩余元素组成
  • Series.fillna,Series.bfill,Series.ffill 填充,后填充,前填充等
  • Series.replace(pos,value),可以是列表替换,也可以是字典替换

3.2.7 重新排序

  • Series.sort_values([axis, ascending, …]) 排序
  • Series.sort_index([axis, level, ascending, …]) 排序

3.2.8 连接、比较

  • Series.append 连接 将二者连接
  • Series.compare 比较 显示出二者的差异

3.2.9 时间相关—暂时省略

3.2.10 string相关

Series.str可以取出Series各元素,转化为str,再去进行操作

3.2.11 plot相关 Series.plot

  • Series.plot.bar
  • Series.plot.hist
  • Series.plot.pie
  • Series.plot.line
  • Series.plot.box等

3.2.12 序列化相关

  • Series.to_csv
  • Series.to_dict
  • Series.to_excel
  • Series.to_xarray
  • Series.to_json
  • Series.to_sql
  • Series.to_string
  • Series.to_xarray

4 pandas之DataFrame

4.1 概要说明

是pandas中的主要数据组织形式。为二维数组,尺寸可变的,数据类型可以多种。包含行、列、可以对行、列分别处理。
可以被认为是一个存储Series的字典容器

4.2 创建方式

class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)

4.2.1 由字典创建

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df
   col1  col2
0     1     3
1     2     4

4.2.2 由数组创建

df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=['a', 'b', 'c'])
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9

4.3 常用属性

  • df1.index #返回行信息
  • df1.columns #返回列信息
  • df1.values #返回二维数组的数据
  • df1.info
  • df1.axes #返回列表,第一个元素是行信息,第二个元素是列信息
  • df1.dtypes #类型
  • df1.shape #返回包含行列信息的数组
  • df1.ndim #返回维度
  • df1.size #返回包含的个数
  • df1.empty #是否为空dataframe,返回一个true或者false
  • df1.style #同display的效果,就会格式化了

4.4 常见函数

4.4.1 取值

  • df1.head(n)
  • df1.tail(n)
  • df1.at[‘a’,“name”]
  • df1.iat[0,0]
  • df1.loc[‘a’] #根据描述定位
  • df1.iloc[0] #根据位置定位
  • df1.keys() #相当于dict的key.
    column.Index([‘name’, ‘sex’], dtype=‘object’)
  • df1.insert(loc,column_name,value) #插入一列,loc指的是插入位置
  • df1.items()和df1.iteritems()
for label, content in df1.iteritems():
    print(f'label: {label}')
    print(f'content: {content}', sep='\n')
    #打印的是每列的Series
  • df1.pop(column_name) 把某一列去掉
  • df1.where(条件) 返回的是各个元素满足此条件的情况
  • df1.mask 与where相反
  • df1.isin() 返回的是各个元素处于此区间的情况

4.4.2 操作

加减乘除求和求指数等等等等
指的都是当中的各个元素分别来计算.

4.4.3 传入函数当作参数

  • DataFrame.apply
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)[source]
  • DataFrame.agg
DataFrame.agg(func=None, axis=0, *args, **kwargs)

举例:对A列的数据求取两个函数,对B列的数据求取另外的函数

df.agg({'A' : ['sum', 'min'], 'B' : ['min', 'max']})
        A    B
sum  12.0  NaN
min   1.0  2.0
max   NaN  8.0
  • DataFrame.transform(func, axis=0, *args, **kwargs)
    其中func可以为系统提供函数,也可以为自定义函数等,也可以为各种函数的组合。
s = pd.Series(range(3))
s
0    0
1    1
2    2
dtype: int64
s.transform([np.sqrt, np.exp])
       sqrt        exp
0  0.000000   1.000000
1  1.000000   2.718282
2  1.414214   7.389056
  • DataFrame.groupby
函数定义:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)

比如:
df.groupby([‘Animal’]).mean()

4.4.4 DataFrame元素状态获取

  • DataFrame.all()
    如果不传参,则默认以列为单位,来判断是否各列数据均为True,返回的是一个series,index为列名.
    如果传参为columns(axis=‘columns’),则以列为单位,来判断是否各列数据均为True.返回的是一个series,0,1等为列名.
    如果传参为columns(axis=None),则不是各列判断,而是判断所有元素,返回一个true还是false的结果.

  • DataFrame.any(),是否有元素为true, 样式同all

  • DataFrame.count() 返回各列非nan的个数, 如果传参axis=0或者’index’,则是返回各行非nan的个数

  • DataFrame,max,mean,median,min,nlargest(n),nsmallest(n),sum
    返回的分别是序列中的最大值、平均值、中值、最小值、最大的n个值、最小的n个值、和等

  • DataFrame.value_counts() 返回的是一个series,存储的原series中的各个元素和出现的次数。!!!但是这个官网说是有,但是试验时又提醒错误,说没有.

4.4.5 DataFrame重新组合、排序等操作

  • DataFrame.align 合并
  • DataFrame.drop 移除某元素
  • DataFrame.drop_duplicates 移除重复元素
  • DataFrame.duplicated 各元素是否是重复元素
  • DataFrame.equals 是否完全相同
  • DataFrame.head 前n行
  • DataFrame.filter可以过滤出某列或者某模糊字段等
  • DataFrame.first
  • DataFrame.last
  • DataFrame.isin(values) 值是否在values中
  • DataFrame.idxmax([axis, skipna]) 最大值的序号
  • DataFrame.idxmin([axis, skipna]) 最小值的序号
  • DataFrame.reindex([index]) 按照index重新展示表
  • DataFrame.reindex
  • DataFrame.rename可以修改index或者columns
  • DataFrame.set_axis
  • DataFrame.set_index等

4.4.6 丢失数据处理

  • DataFrame.isna() 各元素是否为na
  • DataFrame.isnull() 各元素是否为na
  • DataFrame.notna() 各元素是否为na
  • DataFrame.notnull() 各元素是否为na
  • DataFrame.dropna([axis, inplace, how]) 扔掉na的剩余元素组成
  • DataFrame.fillna,DataFrame.bfill,DataFrame.ffill 填充,后填充,前填充等
  • DataFrame.replace(pos,value),可以是列表替换,也可以是字典替换

4.4.7 重新排序

  • DataFrame.sort_values([axis, ascending, …]) 排序
  • DataFrame.sort_index([axis, level, ascending, …]) 排序
  • DataFrame.nlargest(n, columns[, keep]) 对哪个column来取最大的n个
  • DataFrame.nsmallest(n, columns[, keep]) 对哪个column来取最小的n个

4.4.8 连接、比较

  • DataFrame.append 连接 将二者连接
  • DataFrame.compare 比较 显示出二者的差异
  • DataFrame.join
  • DataFrame.merge
  • DataFrame.update
    各个的区别:

4.4.9 时间相关—暂时省略

4.4.10 plot相关 DataFrame.plot

  • DataFrame.plot.area
  • DataFrame.plot.bar
  • DataFrame.plot.hist
  • DataFrame.plot.pie
  • DataFrame.plot.line
  • DataFrame.plot.box等

4.4.12 序列化相关

  • DataFrame.to_csv
  • DataFrame.to_dict
  • DataFrame.to_excel
  • DataFrame.to_json
  • DataFrame.to_sql
  • DataFrame.to_string 等

5 pandas之其他函数

暂缺

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值