气象数据可视化——pandas

1-1.核心数据结构series

Series:一组带有标签的数组,可以看作是一个有序的字典或 Excel 表格中的一列。

  • 结构:

    • 数据 (Values): 一组数据(NumPy 数组),可以是整数、浮点数、字符串、Python 对象等各种数据类型。

    • 索引 (Index): 一组与数据相关联的标签。索引定义了数据的“键”,用于高效地定位和访问数据。默认情况下是整数(0, 1, 2, ..., N-1)。

    • 关键特性:

      • 一维结构。

      • 每个元素都有唯一的索引标签。

      • 可以容纳任何数据类型(dtype)。

      • 支持向量化操作(基于 NumPy)。

      • 对齐操作基于索引(非常重要)。

         创建Series的方法

        通过列表或数组创建Series时,可以指定自定义索引。若未指定索引,pandas会自动生成从0开始的整数索引。                                                                                                                              

data = [10, 20, 30]
index = ['a', 'b', 'c']
series_custom = pd.Series(data, index=index)
 

从字典创建Series时,字典的键会自动成为Series的索引。

dict_data = {'a': 1, 'b': 2, 'c': 3}
series_from_dict = pd.Series(dict_data)
 

Series的常用操作

Series支持向量化操作,可以直接对Series进行数学运算,而无需遍历每个元素。

series1 = pd.Series([1, 2, 3])
series2 = pd.Series([4, 5, 6])
result = series1 + series2
 

1-2.series元素索引

可以通过索引或位置访问Series的元素,使用loc基于标签索引,iloc基于位置索引。

series = pd.Series([10, 20, 30], index=['x', 'y', 'z'])
value_by_label = series.loc['y']
value_by_position = series.iloc[1]
 

Series提供统计方法如mean()(求平均值)sum()max()min()等,方便快速计算描述性统计。

series = pd.Series([1, 2, 3, 4])
print(series.mean())  # 输出: 2.5
print(series.sum())   # 输出: 10
 

Series可以包含缺失值(NaN),使用isna()notna()方法检测缺失值。

series = pd.Series([1, None, 3])
print(series.isna())  # 输出: [False, True, False]
 

使用fillna()方法填充缺失值,或dropna()方法删除缺失值。

filled_series = series.fillna(0)
dropped_series = series.dropna()
 

通过条件表达式可以生成布尔索引,用于筛选数据。

series = pd.Series([1, 2, 3, 4])
filtered = series[series > 2]
print(filtered)  # 输出: 3, 4
 

series命名,在Python的pandas库中,Series对象可以通过name属性来命名。命名有助于标识数据,尤其在多Series操作或DataFrame构建时提升可读性。

import pandas as pd

# 创建未命名的Series
s = pd.Series([1, 2, 3])
print(s.name)  # 输出: None

# 命名Series
s.name = "my_series"
print(s.name)  # 输出: 'my_series'
 

创建时命名

可以在Series初始化时直接通过参数name指定名称:

s = pd.Series([10, 20, 30], name="values")
print(s.name)  # 输出: 'values'
 

2-1.核心数据结构Dataframe

  • 定义: 二维带标签数据结构。可以看作是一个表格或电子表格,或者一个共享相同索引的多个 Series 对象的字典(字典的每个“值”是一个 Series,代表 DataFrame 的一列)。

  • 结构:

    • 数据: 多列数据组成。每一列是一个 Series

    • 行索引 (Index): 定义行的标签(与 Series 的索引概念相同)。

    • 列索引 (Columns): 定义列的名称(标签)。列名是访问和操作数据的关键。

  • 关键特性:

    • 二维表格结构(行和列)。

    • 行和列都有标签(索引)。

    • 列可以有不同的数据类型(dtype)。这是与 NumPy 二维数组的关键区别。

    • 可以看作是一个由 Series 对象(列)组成的字典。

    • 支持强大的数据操作:索引、切片、分组、聚合、合并、透视表、处理缺失值等。

    • 对齐操作同时基于行索引和列标签。

 创建 DataFrame

DataFrame 可以通过以下方式创建:

从字典创建
import pandas as pd

data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35],
    "City": ["New York", "Paris", "London"]
}
df = pd.DataFrame(data)
print(df)
 

输出

      Name  Age      City
0    Alice   25  New York
1      Bob   30     Paris
2  Charlie   35    London

从列表创建
data = [
    ["Alice", 25, "New York"],
    ["Bob", 30, "Paris"],
    ["Charlie", 35, "London"]
]
df = pd.DataFrame(data, columns=["Name", "Age", "City"])
print(df)
 

输出

      Name  Age      City
0    Alice   25  New York
1      Bob   30     Paris
2  Charlie   35    London

常用操作

查看数据
df.head()     # 查看前 5 行
df.tail()     # 查看后 5 行
df.info()     # 查看数据信息(列类型、非空值等)
df.describe() # 统计摘要(均值、标准差等)
 
选择数据
df["Name"]          # 选择单列
df[["Name", "Age"]] # 选择多列
df.iloc[0]          # 通过位置选择行
df.loc[0]           # 通过标签选择行
 
修改数据
df["Age"] = df["Age"] + 1     # 修改整列
df.loc[0, "Age"] = 26         # 修改特定单元格
df["NewColumn"] = df["Age"] * 2 # 添加新列
 
缺失值处理
df.dropna()      # 删除包含缺失值的行
df.fillna(0)     # 填充缺失值为 0
 

重要关系:

  • DataFrame 是 Series 的容器: DataFrame 的每一列都是一个 Series 对象。这些 Series 共享相同的行索引

  • DataFrame 可以看作是一个字典: 字典的“键”是列名(字符串),字典的“值”是对应列的 Series 数据。

总结:

  • Series: 一维带标签数组(单列 + 索引)。

  • DataFrame: 二维带标签表格(多列 + 行索引 + 列名)。这是 Pandas 的绝对核心和灵魂。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值