您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Pandas数据结构的基础用法
## 一、Pandas简介
Pandas是Python中最流行的数据分析库之一,由Wes McKinney于2008年开发。它提供了高效、灵活的数据结构,使得数据清洗、分析和处理变得简单直观。Pandas的名字来源于"Panel Data"(面板数据)和"Python Data Analysis"(Python数据分析)的组合。
Pandas的两个核心数据结构是:
- **Series**:一维带标签数组
- **DataFrame**:二维表格型数据结构
## 二、Series数据结构
### 2.1 Series基本概念
Series是Pandas中最基本的对象,类似于一维数组或列表,但带有标签索引(index)。
```python
import pandas as pd
# 从列表创建Series
s = pd.Series([1, 3, 5, 7, 9])
print(s)
Series可以通过多种方式创建:
# 1. 从列表创建
s1 = pd.Series([10, 20, 30, 40])
# 2. 从字典创建(字典的key会成为index)
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3})
# 3. 从numpy数组创建
import numpy as np
s3 = pd.Series(np.random.randn(5))
# 4. 指定index
s4 = pd.Series([5, 6, 7], index=['x', 'y', 'z'])
# 访问元素
print(s[0]) # 通过位置访问
print(s['a']) # 通过索引访问
# 切片操作
print(s[1:3]) # 位置切片
print(s['b':'d']) # 索引切片
# 基本统计
print(s.mean()) # 平均值
print(s.max()) # 最大值
print(s.min()) # 最小值
DataFrame是Pandas中最常用的数据结构,类似于电子表格或SQL表,是二维的带标签数据结构。
# 从字典创建DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Paris', 'London']
}
df = pd.DataFrame(data)
print(df)
# 1. 从字典列表创建
data = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
df1 = pd.DataFrame(data)
# 2. 从二维数组创建
df2 = pd.DataFrame(np.random.randn(3, 4), columns=['A', 'B', 'C', 'D'])
# 3. 从CSV文件读取
df3 = pd.read_csv('data.csv')
# 4. 从Excel文件读取
df4 = pd.read_excel('data.xlsx')
print(df.head()) # 查看前5行
print(df.tail(3)) # 查看后3行
print(df.shape) # 查看维度
print(df.columns) # 查看列名
print(df.index) # 查看索引
print(df.dtypes) # 查看数据类型
# 选择列
print(df['Name']) # 选择单列
print(df[['Name', 'Age']]) # 选择多列
# 选择行
print(df.iloc[0]) # 通过位置选择行
print(df.loc[0]) # 通过索引选择行
print(df[0:2]) # 行切片
# 条件选择
print(df[df['Age'] > 30]) # 年龄大于30的记录
# 添加列
df['Salary'] = [50000, 60000, 70000]
# 修改列
df['Age'] = df['Age'] + 1
# 删除列
df = df.drop('City', axis=1)
# 修改行
df.loc[0, 'Name'] = 'Alice Smith'
# 设置单列索引
df.set_index('Name', inplace=True)
# 设置多列索引
df.set_index(['Name', 'City'], inplace=True)
# 重置索引
df.reset_index(inplace=True)
# 创建多层索引
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)])
df = pd.DataFrame(np.random.randn(4, 2), index=index, columns=['X', 'Y'])
# 多层索引访问
print(df.loc['A']) # 访问A组
print(df.loc[('A', 1)]) # 访问A组第一个元素
print(df.isnull()) # 检测缺失值
print(df.notnull()) # 检测非缺失值
print(df.isnull().sum()) # 每列缺失值数量
# 删除缺失值
df.dropna() # 删除包含缺失值的行
df.dropna(axis=1) # 删除包含缺失值的列
# 填充缺失值
df.fillna(0) # 用0填充
df.fillna(df.mean()) # 用列均值填充
df.fillna(method='ffill') # 前向填充
df.sort_values('Age') # 按年龄升序
df.sort_values('Age', ascending=False) # 按年龄降序
df.sort_values(['Age', 'Salary']) # 多列排序
df.sort_index() # 按索引升序
df.sort_index(ascending=False) # 按索引降序
grouped = df.groupby('City') # 按城市分组
print(grouped.groups) # 查看分组情况
# 单聚合函数
print(grouped.mean()) # 计算每组的平均值
# 多聚合函数
print(grouped.agg(['mean', 'sum', 'count']))
# 不同列不同聚合
print(grouped.agg({'Age': 'mean', 'Salary': 'sum'}))
df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})
# 纵向合并
result = pd.concat([df1, df2])
# 横向合并
result = pd.concat([df1, df2], axis=1)
left = pd.DataFrame({'key': ['K0', 'K1'], 'A': ['A0', 'A1']})
right = pd.DataFrame({'key': ['K0', 'K2'], 'B': ['B0', 'B2']})
# 内连接
result = pd.merge(left, right, on='key', how='inner')
# 左连接
result = pd.merge(left, right, on='key', how='left')
# 外连接
result = pd.merge(left, right, on='key', how='outer')
Pandas提供了强大的数据结构Series和DataFrame,使得数据处理变得高效便捷。本文介绍了Pandas数据结构的基础用法,包括:
掌握这些基础操作是进行数据分析的第一步,后续可以进一步学习时间序列处理、数据可视化等高级功能。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。