利用Python进行数据分析(二)— pandas 2.1数据结构

pandas是含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于NumPy构建的,让以NumPy为中心的应用变得更加简单。

导入pandas

from pandas import Series, DataFrame
import pandas as pd

# 导入 Series 和 DataFrame,可以直接使用 Series() 和 DataFrame() 函数来创建 Series 和 
# DataFrame 对象了,而无需在代码中使用 pd. 前缀。
from pandas import Series, DataFrame
import pandas as pd

Pandas主要有两种数据结构:Series和DataFrame

一 、Series:

1.1 创建

 = pd.Series([, , ,])

Series是一维标记数组,类似于Python中的列表或数组。它由一组数据和一组与之相关的索引(标签)组成。

import numpy as np
import pandas as pd

# 创建Series
obj = pd.Series([1, 2, 3, 4, 5])

输出:

goCopy code
0    1
1    2
2    3
3    4
4    5
dtype: int64

1.2 索引

1.2.1 介绍

  • Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引
  • 访问:可以通过Series的values和index属性获取其数组表示形式和索引对象: 
  • obj.index , obj.values
# 访问 Series 的值
values = obj.values
print("Series 的值:", values)

# 访问 Series 的索引
index = obj.index
print("Series 的索引:", index)

        输出

Series 的值: [1 2 3 4 5]
Series 的索引: RangeIndex(start=0, stop=5, step=1)

1.2.2  显示索引(自定义索引)

定义:希望所创建的Series带有一个可以对各个数据点进行标记的索引:

 pd.Series(data, index=index)

pd.Series([, , ,], index=[, , ,])

import pandas as pd

# 创建数据
data = [10, 20, 30, 40, 50]
index = ['A', 'B', 'C', 'D', 'E']
# 创建Series
series_custom_index = pd.Series(data, index=index)
# 或者写
#series_custom_index = pd.Series([10, 20, 30, 40, 50], index=['A', 'B', 'C', 'D', 'E'])

输出将是:


A    10
B    20
C    30
D    40
E    50
dtype: int64

访问 :与普通的NumPy数组相比,Series中的单个或一组值可以通过索引的方式选取。

obj2['a']  、obj2[['c', 'a', 'd']] 

修改:obj2['d'] = 6

obj2['a']
# 输出: -5

obj2['d'] = 6

obj2[['c', 'a', 'd']]
# 输出:
# c    3
# a   -5
# d    6
# dtype: int64

1.3 数组运算

在 Pandas 中,Series 对象的数组运算通常会保留索引和值之间的链接。这意味着,对 Series 进行过滤、标量乘法、应用数学函数等操作后,Series 的索引与值之间的对应关系仍然保持不变。

1.3.1 加、减、乘、除 (元素间)

import pandas as pd

# 创建两个Series对象
s1 = pd.Series([1, 2, 3, 4])
s2 = pd.Series([5, 6, 7, 8])

# 加法
result_add = s1 + s2
print("加法结果:")
print(result_add)
# 输出:
# 0     6
# 1     8
# 2    10
# 3    12
# dtype: int64

# 减法
result_sub = s1 - s2
print("\n减法结果:")
print(result_sub)
# 输出:
# 0   -4
# 1   -4
# 2   -4
# 3   -4
# dtype: int64

# 乘法
result_mul = s1 * s2
print("\n乘法结果:")
print(result_mul)
# 输出:
# 0     5
# 1    12
# 2    21
# 3    32
# dtype: int64

# 除法
result_div = s1 / s2
print("\n除法结果:")
print(result_div)
# 输出:
# 0    0.200000
# 1    0.333333
# 2    0.428571
# 3    0.500000
# dtype: float64

# 平方根
result_sqrt = s1.apply(lambda x: x ** 0.5)
print("\n平方根结果:")
print(result_sqrt)
# 输出:
# 0    1.000000
# 1    1.414214
# 2    1.732051
# 3    2.000000
# dtype: float64

1.3.2 应用数学函数

 写法1:  = np.log(s) 

 写法2:   = s.apply(np.log) 

# 1.应用数学函数
result_sqrt = s.apply(np.sqrt)  # 平方根
result_exp = s.apply(np.exp)    # 指数函数
result_log = s.apply(np.log)    # 自然对数
result_sin = s.apply(np.sin)    # 正弦函数

# 2. 应用数学函数
result_sqrt = np.sqrt(s)  # 平方根
result_exp = np.exp(s)    # 指数函数
result_log = np.log(s)    # 自然对数
result_sin = np.sin(s)    # 正弦函数

1.3.3  布尔型数组进行过滤

s[s > 2]

import pandas as pd

# 创建一个 Series 对象
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print("原始 Series 对象:\n", s)

# 创建一个布尔型数组,用于过滤
mask = s > 2
print("布尔型数组:\n", mask)

'''
布尔型数组:
 a    False
b    False
c     True
d     True
e     True
dtype: bool
'''

# 根据布尔型数组进行过滤
filtered_s = s[mask]
print("过滤后的 Series 对象:\n", filtered_s)
'''
过滤后的 Series 对象:
 c    3
d    4
e    5
dtype: int64
'''

布尔型数组 mask 用于过滤 Series 对象 s 中大于 2 的元素。

Series 对象可以看作是一个定长的有序字典,因为它将索引值映射到数据值。因此,你可以使用类似于字典的方式来操作 Seri

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值