1.1 - Pandas简介

1.1.1 Pandas了解

  Pandas 是 机器学习中进行数据分析和处理的一个扩展库,能够快速得从不同格式的文件中加载数据(比如 CSV 、Excel文件等),然后将其转换为可处理的对象。

  Pandas 基于Numpy在 ndarray 的基础上构建出了两种更适用于数据分析的存储结构,分别是 Series(一维数据结构)和 DataFrame(二维数据结构)。在操作 Series 和 DataFrame 时,基本上可以看成是 NumPy 中的一维和二维数组来操作,数组的绝大多数操作它们都可以适用。
 
1.1.2 Pandas数据结构 - Series
  Series类似于Numpy的一维数组,每个元素都有一个索引,且索引默认为整数,从0开始递增。
  1)初始化Series以及获取Series元素
复制代码
import pandas as pd

'''
data:array-like,dict,scalar value
index:必须是不可变类型。允许相同。默认从0开始的整数。
dtype:元素类型,会自动推断,可省略。
name:Series名称
'''
ser = pd.Series(data=[1, 2, 3], index=['a', 'b', 'b'], dtype=int, name='ser_1')

# 方法一:通过自定义的索引获取Series数据
print(ser['b'])

# 方法二:通过默认的0 1 2 ... 索引获取数据
print(ser[0])
复制代码

  2)Series的属性

复制代码
import pandas as pd

ser = pd.Series(data=[1, 2, 3], index=['a', 'b', 'b'], dtype=int, name='ser_1')

# Series常用属性
print(ser.dtype)    # Series元素的类型
print(ser.name)     # Series的名称
print(ser.size)     # Series的长度
print(ser.index)    # Series的索引
print(ser.values)   # 返回Series对应的numpy的一维数组格式
print(ser.empty)    # 判断Series是否为空,返回bool值
复制代码

 

1.1.3 Pandas数据结构 - DataFrame

  DataFrame 是一种表格型的二维数据结构,既有行索引(index),又有列索引(columns),且默认都是从0开始递增的整数。DataFrame的每一个单列和每一个单行都是Series,如果数据中同时包含了多个行和列则是DataFrame。

 

  1)初始化DataFrame
复制代码
import pandas as pd
import numpy as np

'''
data: array-like, dict, DataFrame
index: 行索引
columns: 列索引
dtype: 元素类型
'''
d = ['a', 'b', 'c']  
d0 = [[1, 2, 3], [4, 5, 6]]
d1 = ['Tom', 'Bob', 'Linda']
d2 = [['Tom', 17], ['Bob', 18], ['Linda', 26]]
d3 = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26]}  # 一般将字典的key作为列索引
d4 = [{'name': 'Tom', 'age': 17}, {'name': 'Bob', 'age': 18}, {'name': 'Linda', 'address': 'guangzhou'}]
df = pd.DataFrame(data=d, index=['r1', 'r2', 'r3'], columns=['c'], dtype=np.str_)
print(df)
复制代码

  列表初始化:列表下面的一维,每个元素作为一行存储。

  字典初始化:默认将字典的key作为列索引,key对应的value作用该列的值

  列表&字典联合初始化:如:d4,会将每个字典中的key作为一列,其余字典没有这个key的列默认值为 NaN。

  2)DataFrame的索引
    索引获取列数据,切片获取行数据
    loc指定标签获取数据,iloc指定下标获取数据;这二者都是最多接收两个参数,分别代表行和列的索引值。
复制代码
import pandas as pd
import numpy as np

# DataFrame 的索引
d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]}
df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])
print(df)

# 索引获取列
# print(df['name'])     # 索引获取列
# print(df[['name', 'age']])  # 索引多个列用[]括起来

# 切片获取行
print(df[:2])  # 下标切片 前开后闭
print(df['p1':'p3'])  # index索引切片 前闭后闭

# 索引和切片组合
print(df[['name', 'age']][::2])
print(df[::2][['name', 'age']])
复制代码
复制代码
import pandas as pd

# DataFrame 的索引
d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]}
df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])
print(df)

# loc和iloc接收两个参数,分别索引对 行和列 进行索引。
print(df.loc['p1', ['name', 'age']])  # loc只能通过索引名进行索引
print(df.iloc[0, [0, 1]])  # iloc只能通过下标进行索引
复制代码

  3)DataFrame修改

复制代码
import pandas as pd
import numpy as np

d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]}
df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3'])
print(df)

# 修改单列数据
df['name'] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index)
df['name'] = ['tom', 'bob', 'linda']
df.loc[:, 'name'] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index)
df.iloc[:, :1] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index)
print(df)

# 修改多列数据,单列为Series,多列为DataFrame。
df[['age', 'height']] = pd.DataFrame(data={'age': [18, 18, 18], 'height': [178, 178, 178]}, index=df.index)
print(df)

# 追加单列数据,对不存在的列索引赋值,则为追加
df['hobby'] = pd.Series(data=['sing', 'swip', 'rap'], index=df.index)
print(df)

# 修改单行数据
df[1:2] = ['Tony', 23, 178]
df.loc['p2'] = pd.Series(['Tony', 23, 178], index=df.columns)
print(df)

# 修改多行数据
df[:2] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]]
df.loc[:'p2'] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]]
print(df)

# 追加单行数据,对不存在的行索引赋值,则为追加
df.loc['p4'] = ['Toby', 23, 178]
print(df)
复制代码

 

 

 
posted @   橘子葡萄火龙果  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示