【AI Study】第四天,Pandas(2)- 数据操作基础

文章概要

本文详细介绍 Pandas 的数据操作基础知识,包括:

  • 数据读取与写入
  • 数据选择与过滤
  • 数据清洗
  • 数据排序
  • 实际应用示例

数据读取与写入

CSV 文件操作

# 读取 CSV 文件
df = pd.read_csv('data.csv')

# 写入 CSV 文件
df.to_csv('output.csv', index=False)

# 读取特定列
df = pd.read_csv('data.csv', usecols=['列1', '列2'])

# 处理编码问题
df = pd.read_csv('data.csv', encoding='utf-8')

Excel 文件操作

# 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 写入 Excel 文件
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

# 读取多个工作表
excel_file = pd.ExcelFile('data.xlsx')
df1 = pd.read_excel(excel_file, 'Sheet1')
df2 = pd.read_excel(excel_file, 'Sheet2')

JSON 文件操作

# 读取 JSON 文件
df = pd.read_json('data.json')

# 写入 JSON 文件
df.to_json('output.json')

# 处理嵌套 JSON
df = pd.json_normalize(data)

SQL 数据库操作

# 读取 SQL 数据
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql_query("SELECT * FROM table_name", conn)

# 写入 SQL 数据
df.to_sql('table_name', conn, if_exists='replace')

数据选择与过滤

列选择

# 选择单列
df['列名']

# 选择多列
df[['列1', '列2']]

# 使用 loc 选择列
df.loc[:, '列名']
df.loc[:, ['列1', '列2']]

行选择

# 使用 iloc 选择行
df.iloc[0]  # 第一行
df.iloc[0:5]  # 前五行

# 使用 loc 选择行
df.loc[0]  # 索引为0的行
df.loc[0:5]  # 索引从0到5的行

条件过滤

# 简单条件
df[df['列名'] > 100]

# 多条件组合
df[(df['列1'] > 100) & (df['列2'] == '值')]

# 使用 isin
df[df['列名'].isin(['值1', '值2'])]

数据清洗

处理缺失值

# 检查缺失值
df.isnull()
df.isnull().sum()

# 删除缺失值
df.dropna()  # 删除任何包含缺失值的行
df.dropna(axis=1)  # 删除任何包含缺失值的列
df.dropna(subset=['列1', '列2'])  # 删除指定列包含缺失值的行

# 填充缺失值
df.fillna(0)  # 用0填充
df.fillna(method='ffill')  # 用前一个值填充
df.fillna(method='bfill')  # 用后一个值填充
df.fillna({'列1': 0, '列2': '未知'})  # 对不同列使用不同的填充值

处理重复值

# 检查重复值
df.duplicated()

# 删除重复值
df.drop_duplicates()  # 删除所有重复行
df.drop_duplicates(subset=['列1', '列2'])  # 基于特定列删除重复行

数据转换

# 数据类型转换
df['列名'] = df['列名'].astype('int')
df['列名'] = df['列名'].astype('float')
df['列名'] = df['列名'].astype('str')

# 字符串处理
df['列名'] = df['列名'].str.upper()
df['列名'] = df['列名'].str.lower()
df['列名'] = df['列名'].str.strip()

数据标准化

# 最小-最大标准化
df['列名'] = (df['列名'] - df['列名'].min()) / (df['列名'].max() - df['列名'].min())

# Z-score标准化
df['列名'] = (df['列名'] - df['列名'].mean()) / df['列名'].std()

数据排序

按列排序

# 升序排序
df.sort_values('列名')

# 降序排序
df.sort_values('列名', ascending=False)

# 多列排序
df.sort_values(['列1', '列2'], ascending=[True, False])

自定义排序

# 使用自定义排序顺序
custom_order = ['低', '中', '高']
df['列名'] = pd.Categorical(df['列名'], categories=custom_order, ordered=True)
df.sort_values('列名')

实际应用示例

示例1:销售数据清洗

# 创建示例数据
sales_data = pd.DataFrame({
    '日期': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],
    '产品': ['A', 'B', 'A', 'C'],
    '销量': [100, None, 150, 80],
    '单价': [10.5, 15.0, 10.5, 20.0]
})

# 数据清洗
# 1. 处理缺失值
sales_data['销量'] = sales_data['销量'].fillna(sales_data['销量'].mean())

# 2. 计算销售额
sales_data['销售额'] = sales_data['销量'] * sales_data['单价']

# 3. 按产品分组统计
product_stats = sales_data.groupby('产品').agg({
    '销量': 'sum',
    '销售额': 'sum'
}).round(2)

print(product_stats)

示例2:学生成绩分析

# 创建示例数据
grades = pd.DataFrame({
    '学号': ['001', '002', '003', '004', '005'],
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '语文': [85, 92, 78, 88, 95],
    '数学': [92, 88, 95, 82, 90],
    '英语': [88, 85, 90, 87, 92]
})

# 数据处理
# 1. 计算平均分
grades['平均分'] = grades[['语文', '数学', '英语']].mean(axis=1).round(2)

# 2. 按平均分排序
grades_sorted = grades.sort_values('平均分', ascending=False)

# 3. 添加排名
grades_sorted['排名'] = range(1, len(grades_sorted) + 1)

print(grades_sorted)

总结

数据操作基础部分涵盖了:

  1. 各种文件格式的读写操作
  2. 数据选择和过滤的方法
  3. 数据清洗和转换技术
  4. 数据排序和自定义排序
  5. 实际应用示例

掌握这些基础数据操作技能对于进行数据分析至关重要。在实际工作中,这些操作往往是数据分析的第一步,为后续的深入分析打下基础。建议多加练习这些基础操作,熟悉各种方法的适用场景,提高数据处理效率。

你可能感兴趣的:(AI,Study,人工智能,pandas,ai)