大数据清洗3(pandas - 基本数据结构)

Posted 晨沉宸辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据清洗3(pandas - 基本数据结构)相关的知识,希望对你有一定的参考价值。

import numpy as np 、
import pandas as pd

一、series

Series是Pandas包提供的一种Key-value型数据结构,其中Key为用户定义的显示index,每个显式index对
应一个value值.
它与Python列表的区别在于,Series的每个元素都带有两种index

  • 显示index : 由用户指定
  • 隐式index : 由系统自动分配(Series对象中每个元素的下标,类似Python"列表"的下标)

Series的访问既可以通过显示index,也可以通过隐式index

在数据分析和数据科学项目中,一般用显式索引(index),而不是隐式下标,原因在于:当数据量很大时,很难准确定义其下标

1、创建series

语法如下:

 s = pd.Series(data, index=index)

其中 data 可以是不同的内容:

  • Ndarray
  • 字典
  • 标量

index 是轴标签列表,根据不同的情况传入的内容有所不同。
如果 data 是 ndarray ,则索引的长度必须与数据的长度相同。如果没有入索引,将创建一个值为[0,…,len(data)-1] 的索引。

# 通过数组创建一个series 
np.random.seed(1234) 
arr1 = np.random.randint(1,10,5) 
arr1

在这里插入图片描述

ser1 = pd.Series(arr1,index = ["a","b","c","d","e"]) 
ser1

在这里插入图片描述

pd.Series(arr1)

在这里插入图片描述

#通过字典创建series 
dict1 = {"a":1,"b":2,"c":3} 
dict1

在这里插入图片描述

ser2 = pd.Series(dict1) 
ser2

在这里插入图片描述

# 通过标量生成series 
pd.Series(3,index=["a","b","c"])

在这里插入图片描述

2、series常用属性

ser1

在这里插入图片描述

ser1.index

在这里插入图片描述

ser1.values

在这里插入图片描述

ser3 = pd.Series(arr1,index = ["a","b","c","d","e"],name="data") 
ser3

在这里插入图片描述
在多数情况下,series 名称会被自动分配,例如在获取 1D 切片的 DataFrame 时。(后续DataFrame操作将会讲解到)
在这里插入图片描述

ser3.rename("数值")

在这里插入图片描述

ser3

在这里插入图片描述

ser3.rename("数值",inplace =True)
ser3

在这里插入图片描述

3、series的特性

  • Series可以进行索引和切片操作
  • Series 同时也像一个固定大小的 dict ,可以通过索引标签获取和设置值
  • Series 与 ndarray 非常相似,是大多数 NumPy 函数的有效参数

3.1 series的数组特性

ser1

在这里插入图片描述

ser1[0]
ser1[1:4]
ser1[[1,3,4]]

在这里插入图片描述

ser1>6
ser1[ser1>6]

在这里插入图片描述

ser1
np.exp(ser1)
np.e**4

在这里插入图片描述

3.2 series字典特性

ser1
ser1["c"]
ser1[1:4]
ser1["c":"e"]
ser1[["a","c","d"]]

在这里插入图片描述

ser1["a"] = 0 #对series中的元素值进行更改
ser1
ser1.get("b","没找到")
ser1.get("k","没找到")

在这里插入图片描述

3.3 矢量化和标签对齐

ser1

在这里插入图片描述

ser5 = pd.Series([1,2,3,4,5],["a","b","c","d","e"]) 
ser5

在这里插入图片描述

ser1+ser5 #基于标签对齐并且进行是量化运算

在这里插入图片描述

ser1

在这里插入图片描述

ser6 = pd.Series([1,2,3,4,5],["a","b","k","d","n"]) 
ser6

在这里插入图片描述

ser1+ser6

在这里插入图片描述

二、DataFrame

DataFrame是一个可以包含不同数据类型列的二维数据结构,类似于电子表格或SQL表,或Series对象
的字典集合,是最常用的pandas对象。

1、创建DataFrame

和 Series 类似,创建 DataFrame 时,也接受许多不同类的参数。虽然在绝大多数情况下,我们通过读
取文件来创建 DataFrame。 DataFrame 可以从序列类的数据构建

1.1 通过数组创建dataframe

arr = np.random.randint(1,100,(3,7)) 
arr

在这里插入图片描述

#通过数组创建dataframe 
pd.DataFrame(arr,index=["a","c","b"],columns=["A","B","C","D","E","F","G"])

在这里插入图片描述

1.2 通过字典创建dataframe

#通过字典创建dataframe 
dict1 = {"员工姓名":["赵一","钱明","周元"], 
         "销售业绩":[30000,20000,50000], 
         "提成收入":[6000,4000,10000]} 
dict1

在这里插入图片描述

df1 = pd.DataFrame(dict1) 
df1

在这里插入图片描述

#通过字典创建dataframe 
dict2 = {"员工姓名":["赵一","钱明","周元"], 
         "销售业绩":[30000,20000], 
         "提成收入":[6000,4000,10000]} 
dict2

在这里插入图片描述

# pd.DataFrame(dict2)
#通过字典创建dataframe 
dict3 = {"员工姓名":pd.Series(["赵一","钱明","周元"],
index=["001","002","003"]),
 "销售业绩":pd.Series([30000,20000],index=["001","002"]),
  "提成收入":pd.Series([6000,4000,10000],index=["001","002","003"])} 
  dict3

在这里插入图片描述

df2 = pd.DataFrame(dict3) 
df2

在这里插入图片描述

df2.index

在这里插入图片描述

df2.columns

在这里插入图片描述

2、dataframe的列操作

DataFrame 列的选取,设置和删除列的工作原理与类似的 dict 操作相同。

df2

在这里插入图片描述

2.1 增加列

df2["基本工资"] = 2500 #通过一个标量添加一整列信息 
df2

在这里插入图片描述

df2["创造收益"]=df2["销售业绩"]-df2["提成收入"]-df2["基本工资"] #通过其他列的运算得到新的一列
df2

在这里插入图片描述

df2["是否达标"] = df2["创造收益"]>20000 
df2

在这里插入图片描述

df2["性别"] =pd.Series(["女","男"],index=["001","003"]) 
df2

在这里插入图片描述

#insert插入列 
df2.insert(6,"年龄",[25,27,30])
df2

在这里插入图片描述

2.2 删除列

df2.pop("年龄")

在这里插入图片描述

df2

在这里插入图片描述

del df2["性别"]
df2

在这里插入图片描述

df2.drop(columns=["是否达标","基本工资"],inplace=True)
df2

在这里插入图片描述

df2.drop(index=["001","003"])

在这里插入图片描述

3、索引/选择

df2["基本工资"] = 2500 #通过一个标量添加一整列信息 
df2["性别"] =pd.Series(["女","男"],index=["001","003"]) 
df2["是否达标"] = df2["创造收益"]>20000 
df2.insert(6,"年龄",[25,27,30])
df2

在这里插入图片描述

3.1 基于标签的索引

df.loc[行索引信息(标签),列索引信息(标签)]

  • 如果只索引行信息,所有列信息都保留,索引语法中的列索引信息可以省略
  • 如果只索引列信息,所有行信息都保留,索引语法中的行索引信息不可以被省略,写冒号加逗号表示所有行 信息都保留
df2.loc["001"]

在这里插入图片描述

df2.loc["001","员工姓名":"创造收益"]

在这里插入图片描述

df2.loc["001":"002","员工姓名":"创造收益"]

在这里插入图片描述
在这里插入图片描述

df2.loc["004"] = ["李雷",60000,12000,np.nan,2500,"男",24,False]
df2

在这里插入图片描述

df2.loc[["001","002","004"]]
df2.loc[:,["员工姓名","是否达标"]]
df2.loc[["001","002","004"],"员工姓名":"基本工资"]
# df2.loc[["员工姓名","是否达标"]]

在这里插入图片描述

3.2 基于位置的索引

df.iloc[行索引,列索引]

  • 如果只索引行信息,所有列信息都保留,索引语法中的列索引信息可以省略
  • 如果只索引列信息,所有行信息都保留,索引语法中的行索引信息不可以被省略,写冒号加逗号表示所有行 信息都保留
df2

在这里插入图片描述

df2.iloc[1]

在这里插入图片描述

df2.iloc[1]
df2.iloc[:,-1]
df2.iloc[1:3] #基于位置的切片,终止值是切不到的

在这里插入图片描述

df2.loc["002":"003"] #基于标签的切片,终止值会被切到

在这里插入图片描述

df2

在这里插入图片描述

df2.iloc[0:3,0:4]

在这里插入图片描述

df2.iloc[[1,3],[0,2,3]]

在这里插入图片描述

3.3 布尔索引

df2[df2.提成收入>=10000]
  1. & 表示并且,两个条件必须都满足
  2. | 表示或者,满足任意条件都可以
df2[df2.年龄 >25]

在这里插入图片描述

#年龄大于25并且提成收入超过1w的员工 
df2[(df2.提成收入>=10000) & (df2.年龄 >25)]
#年龄大于25或者提成收入超过1w的员工 
df2[(df2.提成收入>=10000) | (df2.年龄 >25)]

在这里插入图片描述

以上是关于大数据清洗3(pandas - 基本数据结构)的主要内容,如果未能解决你的问题,请参考以下文章

Pandas数据分析入门

数据分析之Pandas

Pandas:数据清洗

数据分析03 /基于pandas的数据清洗级联合并

pandas(13):数据清洗(重复记录)

pandas介绍以及数据清洗使用