欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【AI Study】第四天,Pandas(2)- 数据操作基础

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

2025/6/19 18:07:43 来源:https://blog.csdn.net/tearofthemyth/article/details/148749228  浏览:    关键词:【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. 实际应用示例

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词