数据导入与预处理-课程总结-01~03章(中)

简介: 数据导入与预处理-课程总结-01~03章第1章 数据预处理概述1.1 基本概念1.1.1 大数据项目开发流程

3.1.3 Series索引

包括:位置下标 / 标签索引 / 切片索引 / 布尔型索引

1. 位置索引

# 位置下标,类似序列
s = pd.Series(np.random.rand(5))
s

输出为:

Out[18]:
0 0.453055
1 0.208872
2 0.917167
3 0.238751
4 0.720561
dtype: float64

2. 标签索引

s = pd.Series(np.random.rand(5), index = ['a','b','c','d','e'])
s

输出为:

Out[22]:
a 0.037435
b 0.536072
c 0.051238
d 0.906477
e 0.474856
dtype: float64

3. 切片索引

# 切片索引
s1 = pd.Series(np.random.rand(5))
s2 = pd.Series(np.random.rand(5), index = ['a','b','c','d','e'])
print('-----')    
print(s1[1:4],s1[4])
print(s2['a':'c'],s2['c'])
print(s2[0:3],s2[3])
print('-----')

输出为:

-----
1 0.792143
2 0.876208
3 0.542396
dtype: float64 0.3478167781738142
a 0.338142
b 0.314807
c 0.716646
dtype: float64 0.7166457177011984
a 0.338142
b 0.314807
c 0.716646
dtype: float64 0.7435841750851758
-----

4. 布尔索引

s = pd.Series(np.random.rand(3)*100)
s[4] = None  # 添加一个空值
s

输出为:

Out[28]:
0 10.7214
1 72.9608
2 23.8594
4 None
dtype: object
bs1 = s > 50
print(bs1, type(bs1), bs1.dtype)

输出为:

0 False
1 True
2 False
4 False
dtype: bool <class ‘pandas.core.series.Series’> bool

3.1.5 Series基本操作技巧

本部分主要包括数据查看 / 重新索引 / 对齐 / 添加、修改、删除值等。

数据查看

# 数据查看
s = pd.Series(np.random.rand(50))
s.head(10)
s.tail()

重新索引reindex

# 重新索引reindex
# .reindex将会根据索引重新排序,如果当前索引不存在,则引入缺失值
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
s1 = s.reindex(['c','b','a','d'])

数据对齐

# Series对齐 数据对齐
s1 = pd.Series(np.random.rand(3), index = ['Jack','Marry','Tom'])
s2 = pd.Series(np.random.rand(3), index = ['Wang','Jack','Marry'])
s1 + s2

输出为:

Out[41]:
Jack 0.954397
Marry 1.388826
Tom NaN
Wang NaN
dtype: float64

Series 和 ndarray 之间的主要区别是,Series 上的操作会根据标签自动对齐

index顺序不会影响数值计算,以标签来计算

空值和任何值计算结果仍然为空值

数据删除

In [44]: 
# 删除:.drop
s = pd.Series(np.random.rand(5), index = list('ngjur'))
s1 = s.drop(['g','j'])

输出为:

Out[46]:
n 0.820846
u 0.321654
r 0.560360
dtype: float64

数据修改

# 修改
s = pd.Series(np.random.rand(3), index = ['a','b','c'])
s[['b','c']] = 200
s

输出为:

Out[58]:
a 0.933075
b 200.0
c 200.0
dtype: float64

3.2 DataFrame

3.2.1 Dataframe简介

DataFrame是一个结构类似于二维数组或表格的对象,与Series类对象相比,DataFrame类对象也由索引和数据组成,但该对象有两组索引,分别是行索引和列索引。

DataFrame类对象的行索引位于最左侧一列,列索引位于最上面一行,且每个列索引对应着一列数据。DataFrame类对象其实可以视为若干个公用行索引的Series类对象的组合。

3.2.2 创建DataFrame对象

demo_arr = np.array([['a', 'b', 'c'],['d', 'e', 'f']])
df_obj = pd.DataFrame(demo_arr,index = ['row_01','row_02'],columns=['col_01', 'col_02', 'col_03'])
df_obj

输出为:

        col_01 col_02 col_03
row_01  a     b     c
row_02  d     e     f

3.2.3 Dataframe:索引

Dataframe既有行索引也有列索引,可以被看做由Series组成的字典(共用一个索引)

选择列 / 选择行 / 切片 / 布尔判断

1.选择行与列

# 选择行与列
df = pd.DataFrame(np.random.rand(12).reshape(3,4)*100,
                   index = ['one','two','three'],
                   columns = ['a','b','c','d'])
print(df)
data1 = df['a']
data2 = df[['a','c']]
print(data1,type(data1))
print(data2,type(data2))
print('-----')
# 按照列名选择列,只选择一列输出Series,选择多列输出Dataframe
data3 = df.loc['one']
data4 = df.loc[['one','two']]
print(data2,type(data3))
print(data3,type(data4))
# 按照index选择行,只选择一行输出Series,选择多行输出Dataframe

输出为:


2. df.loc[] - 按index选择行

# df.loc[] - 按index选择行
df1 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
                   index = ['one','two','three','four'],
                   columns = ['a','b','c','d'])
df2 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
                   columns = ['a','b','c','d'])
print(df1)
print(df2)
print('-----')
data1 = df1.loc['one']
data2 = df2.loc[1]
print(data1)
print(data2)
print('单标签索引\n-----')
# 单个标签索引,返回Series
# data3 = df1.loc[['two','three','five']] #不再支持不存在的index,本例为'five'
data4 = df2.loc[[3,2,1]]
#print(data3)
print(data4)
print('多标签索引\n-----')
# 多个标签索引,如果标签不存在,则返回NaN
# 顺序可变
data5 = df1.loc['one':'three']
data6 = df2.loc[1:3]
print(data5)
print(data6)
print('切片索引')
# 可以做切片对象
# 末端包含
# 核心笔记:df.loc[label]主要针对index选择行,同时支持指定index,及默认数字index

输出为:


3. df.iloc[] - 按照整数位置(从轴的0到length-1)选择行

# df.iloc[] - 按照整数位置(从轴的0到length-1)选择行
# 类似list的索引,其顺序就是dataframe的整数位置,从0开始计
df = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
                   index = ['one','two','three','four'],
                   columns = ['a','b','c','d'])
print(df)
print('------')
print(df.iloc[0])
print(df.iloc[-1])
#print(df.iloc[4])
print('单位置索引\n-----')
# 单位置索引
# 和loc索引不同,不能索引超出数据行数的整数位置
print(df.iloc[[0,2]])
print(df.iloc[[3,2,1]])
print('多位置索引\n-----')
# 多位置索引
# 顺序可变
print(df.iloc[1:3])
print(df.iloc[::2])
print('切片索引')
# 切片索引
# 末端不包含

输出为:

相关文章
|
8月前
|
JSON 数据库 数据格式
数据导入与预处理-课程总结-04~06章
数据导入与预处理-课程总结-04~06章
|
数据挖掘
R语言之数据导出
R语言之数据导出
218 0
|
数据采集 存储 自然语言处理
数据导入与预处理-课程总结-01~03章(上)
数据导入与预处理-课程总结-01~03章 第1章 数据预处理概述 1.1 基本概念 1.1.1 大数据项目开发流程
数据导入与预处理-课程总结-01~03章(上)
|
数据采集 搜索推荐 大数据
数据导入与预处理-课程总结-01~03章(下)
数据导入与预处理-课程总结-01~03章 第1章 数据预处理概述 1.1 基本概念 1.1.1 大数据项目开发流程
数据导入与预处理-课程总结-01~03章(下)
|
数据挖掘 大数据 索引
数据导入与预处理-第6章-03数据规约
数据导入与预处理-第6章-03数据规约 3 数据规约 3.1 数据规约概述(6.3.1 )
数据导入与预处理-第6章-03数据规约
|
SQL 存储 自然语言处理
数据导入与预处理-第6章-01数据集成
数据导入与预处理-第6章-01数据集成 1 数据集成概述 1.1 数据集成需要关注的问题 2 基于Pandas实现数据集成
数据导入与预处理-第6章-01数据集成
|
数据处理 Python
数据导入与预处理-第6章-04pandas综合案例(下)
数据导入与预处理-第6章-04pandas综合案例 1 pandas综合案例-运动员信息数据 1.1 查看数据 1.2 数据处理与分析
数据导入与预处理-第6章-04pandas综合案例(下)
|
数据处理 Python
数据导入与预处理-第6章-04pandas综合案例(上)
数据导入与预处理-第6章-04pandas综合案例 1 pandas综合案例-运动员信息数据 1.1 查看数据 1.2 数据处理与分析
数据导入与预处理-第6章-04pandas综合案例(上)
|
数据采集 大数据 开发者
数据预处理—数据清洗—数据过滤功能代码|学习笔记
快速学习数据预处理—数据清洗—数据过滤功能代码
364 0
数据预处理—数据清洗—数据过滤功能代码|学习笔记
|
数据采集 数据挖掘 开发者
数据理解与预处理-3|学习笔记
快速学习数据理解与预处理-3
数据理解与预处理-3|学习笔记

相关课程

更多