dist增加一行 python python series增加一行_数据


一、介绍

  1. pandas 是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

2. pandas中提供了两种常见的数据类型:

  • 一维 Series
  • 二维 DataFrame

二、使用及安装方式

安装


# 方法一:


导入,pandas习惯被简写成pd


import pandas as pd


三、Series类型

Series类型类似于Numpy的一维数组对象,可以将该类型看做是一组数据与数据相关的标签(索引)联合而构成(带有标签的一维数组对象)。

  1. 创建方式

列表


s=pd.Series([1,2,3],index=list("abc"))


字典


s=pd.Series({"a":1,"b":2,"c":3})


numpy中的ndarray数组


s=pd.Series(np.array([1,2,3]),index=list("abc"))


标量创建


s=pd.Series(1,index=list("abc"))


2. 相关属性

  • index 索引
  • values 值
  • shape 形状
  • size 元素个数
  • dtype 类型
  • head/tail 首/尾元素

3. 相关操作

  • 矢量化运算

运算符

函数add、sub、div、 mul,可以通过fill_value来对nan进行填充


s1.add(s2,fill_value=1)


  • isnull/notnull 空值判断
  • 统计函数sum、min、max、min...,series在运算nan时会忽略nan,比如求和时结果部位nan

4. 索引和切片

如果Series对象的index值为非数值类型,通过[索引]访问元素,索引既可以是标签索引,也可以是位置索引。这会在一定程度上造成混淆。我们可以通过:

  • loc 仅通过标签索引访问,包左包右。
  • iloc 仅通过位置索引访问,包左不包右。

这样,就可以更加具有针对性去访问元素。

也可以通过布尔值数组作为索引。

5. CURD

  • 获取和修改 loc、iloc
  • 追加

方法一:loc[索引]=值

方法二:

reindex(新索引,method='填充方式',limit=填充次数)

  • 删除 drop('索引',inplace=TrueFalse)

四、DataFrame类型

DataFrame是一个多维数据类型。因为通常使用二维数据,因此,我们可以将DataFrame理解成类似excel的表格型数据,由多列组成,每个列的类型可以不同。

因为DataFrame是多维数据类型,因此,DataFrame既有行索引,也有列索引。

  1. 创建方式
  • 数组
df=pd.DataFrame([[1,2,3],[4,5,6]],index=["A","B"],columes=["a","b","c"])


  • 字典
pd


2. 相关属性

  • index行索引
  • columns 列索引
  • values 值
  • shape 形状
  • ndim 维度
  • dtypes 类型

3. 相关操作

  • 列操作

获取列


df[列索引]
df.列索引


增加修改列


df[列索引]=列数据


删除列


del df[列索引]

# pop 删除指定索引的元素,返回被删除的元素,只能删除一列
df.pop(列索引)

# axis在dataframe中,不一定指定0就是垂直方向,1就是水平方向。
df.drop(列索引或数组,axis=10)


  • 行操作

获取行


df.loc[行索引]
df.iloc[行编号]
df[[布尔值]]


增加行


#追加单行
df.append(row)

#追加多行,append也可以,但是不适合
pd.concat((df1,df2),ignore_index=True)


  • 行列混合操作

切片


# 先获取行
df.loc[].loc[]

# 先获取列
df[].loc[]

# 混合切片
# 切片只能从高维切到低维。
# 所以,对于dataframe行列的混合切片,只能先切行,再切列
# (1)loc
df.loc[标签start:标签end:step,低维切片(按照标签)]  # 包含end
#  (2)iloc
df.iloc[位置start:位置end:step,低维切片(按照位置)]  # 不包含end


  • 混合运算

DataFrame的一行或一列都是Series类型的对象。因此,DataFrame可以近似看做是多行或多列Series构成的,Series对象支持的很多操作,对于DataFrame对象也同样适用,我们可以参考之前Series对象的操作。

转置:

a.

b. DataFrame与Series混合运算。【默认Series索引匹配DataFrame的列索引,然后进行行广播。可以通过DataFrame对象的运算方法的axis参数,指定匹配方式(匹配行索引还是列索引)。


df1+df2

# 【注意】填充值只能够当其中一个dataframe有效,如果两个dataframe的值都是nan
df1.add(df2,fill_value=0)


  • 行列转换
df1.T


a. 索引排序

Series与DataFrame对象可以使用sort_index方法对索引进行排序。DataFrame对象在排序时,还可以通过axis参数来指定轴(行索引还是列索引)。也可以通过ascending参数指定升序还是降序。


df.sort_index(axis=0,ascending=False)


b. 值排序

Series与DataFrame对象可以使用sort_values方法对值进行排序。


# axis
# by:按照哪个索引进行排序
#     排的是行,按照哪个列索引进行排序
#     排的是列,按照哪个行索引进行排序
# inplace
# asending :默认True 升序
df.sort_values(axis= ,by= )


c. 排名方法


#参数
# method:默认并列元素 ,显示均值
#         也可以设置max,min ,first(按照数据在原始数据中出现的顺序排名)
# s.rank(method="min")


  • 统计方法

mean / sum / count

max / min

cumsum / cumprod 累加/累乘

idxmax / idxmin

var / std 方差/标准差

corr / cov 相关系数/协方差

  • 其他

unique

unique 只能去除重复元素,不能排序(ndarray数组是可以排序的)

value_counts

value_counts返回series中每个值出现的次数,默认按照降序排列

isin

isin 可以使用与serise,也可以适用于dataframe,判断参数是否存在于pandas对象中;
也可以判断原元素的交集 True的是交集的部分。