7.29笔记

从CSV文件读取数据
CSV文件是最常见的数据文件格式之一。使用pd.read_csv可以轻松读取CSV文件。

df = pd.read_csv('data.csv')
print(df.head())
写入数据到CSV文件
将数据写入CSV文件同样简单,只需使用to_csv方法。

df.to_csv('output.csv', index=False)
从Excel文件读取数据
除了CSV文件,Pandas还支持读取Excel文件。使用pd.read_excel方法,可以读取Excel文件中的数据。

df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())
写入数据到Excel文件
将数据写入Excel文件可以使用to_excel方法。

df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
从其他格式读取数据
Pandas还支持读取其他多种格式的数据文件,如JSON、SQL数据库、HTML表格等。

# 从JSON文件读取数据
df_json = pd.read_json('data.json')
print(df_json.head())
 
# 从SQL数据库读取数据
import sqlite3
conn = sqlite3.connect('database.db')
df_sql = pd.read_sql('SELECT * FROM table_name', conn)
print(df_sql.head())
 
# 从HTML表格读取数据
df_html = pd.read_html('https://example.com')[0]
print(df_html.head())
数据选择与过滤
Pandas提供了强大的数据选择与过滤功能,可以灵活地提取所需的数据。

选择列
可以通过列名选择单列或多列数据。

# 选择单列
print(df['column_name'])
 
# 选择多列
print(df[['column_name1', 'column_name2']])
选择行
可以通过行号或标签选择特定的行。

# 按行号选择
print(df.iloc[0])  # 第一行
print(df.iloc[:5])  # 前五行
 
# 按标签选择
print(df.loc[0])  # 第一行
print(df.loc[:5])  # 前五行
条件过滤
可以使用条件表达式筛选数据。

# 条件筛选
filtered_df = df[df['column_name'] > value]
print(filtered_df)
多条件过滤
可以使用逻辑运算符组合多个条件进行筛选。

# 多条件筛选
filtered_df = df[(df['column_name1'] > value1) & (df['column_name2'] < value2)]
print(filtered_df)
数据清洗
数据清洗是数据处理中的重要步骤,Pandas提供了多种方法来处理缺失值、转换数据类型和删除重复数据。

处理缺失值
缺失值可能会导致分析结果不准确,Pandas提供了多种方法来处理缺失值。

# 检查缺失值
print(df.isnull().sum())
 
# 删除包含缺失值的行
df = df.dropna()
 
# 填充缺失值
df = df.fillna(value)
数据类型转换
为了确保数据的一致性和准确性,有时需要转换列的数据类型。

# 转换数据类型
df['column_name'] = df['column_name'].astype('int')
删除重复值
重复数据可能会影响分析结果,需要删除这些数据。

# 删除重复行
df = df.drop_duplicates()
数据合并与连接
在数据分析过程中,常常需要将多个数据框合并或连接在一起。Pandas提供了多种方法来实现这一功能。

合并数据框
使用pd.concat可以将多个数据框按行或按列合并在一起。

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [7, 8, 9]})
 
# 按行合并
merged_df = pd.concat([df1, df2], axis=0)
print("按行合并后的数据框:\n", merged_df)
 
# 按列合并
merged_df = pd.concat([df1, df2], axis=1)
print("按列合并后的数据框:\n", merged_df)
连接数据框
使用pd.merge可以根据一个或多个键将两个数据框连接在一起,支持内连接、左连接、右连接和外连接。

df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value': [4, 5, 6]})
 
# 内连接
merged_df = pd.merge(df1, df2, on='key', how='inner')
print("内连接:\n", merged_df)
 
# 左连接
merged_df = pd.merge(df1, df2, on='key', how='left')
print("左连接:\n", merged_df)
 
# 右连接
merged_df = pd.merge(df1, df2, on='key', how='right')
print("右连接:\n", merged_df)
 
# 外连接
merged_df = pd.merge(df1, df2, on='key', how='outer')
print("外连接:\n", merged_df)

数据分组与聚合
分组计算
使用groupby方法可以按列对数据进行分组,然后应用聚合函数计算统计量。

# 按列分组
grouped = df.groupby('column_name')
 
# 计算分组统计量
print("分组求平均值:\n", grouped['another_column'].mean())
print("分组求和:\n", grouped['another_column'].sum())
自定义聚合函数
可以使用agg方法应用自定义的聚合函数。

# 自定义聚合函数
aggregated = df.groupby('column_name').agg({
    'another_column': 'mean',
    'yet_another_column': 'sum'
})
print("自定义聚合函数:\n", aggregated)
数据转换
Pandas提供了多种方法来转换数据,包括应用函数、排序和数据透视表等。

应用函数
可以使用apply方法对数据框的列应用函数。

# 对列应用函数
df['new_column'] = df['column_name'].apply(lambda x: x * 2)
print("应用函数后的数据框:\n", df)
排序
可以使用sort_values方法对数据框按列排序。

# 按列排序
df = df.sort_values(by='column_name', ascending=False)
print("排序后的数据框:\n", df)
数据透视表
数据透视表是数据分析中的常用工具,可以将数据框转换为透视表格式。

# 创建数据透视表
pivot_table = df.pivot_table(values='value_column', index='index_column', columns='columns_column', aggfunc='mean')
print("数据透视表:\n", pivot_table)
实际应用示例
示例数据
以下是一个示例数据框,用于演示Pandas的各种操作。

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [24, 27, 22, 32, 29],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'],
    'Salary': [70000, 80000, 55000, 90000, 60000]
}
 
df = pd.DataFrame(data)
print("示例数据:\n", df)
计算各城市的平均薪资
average_salary = df.groupby('City')['Salary'].mean()
print("各城市的平均薪资:\n", average_salary)
添加新列:年龄分组
# 添加新列:年龄分组
df['Age Group'] = pd.cut(df['Age'], bins=[20, 25, 30, 35], labels
 
=['20-25', '25-30', '30-35'])
print("添加年龄分组后的数据框:\n", df)
根据年龄分组计算薪资统计量
salary_stats = df.groupby('Age Group')['Salary'].agg(['mean', 'min', 'max'])
print("根据年龄分组计算薪资统计量:\n", salary_stats)
按城市和年龄分组计算薪资统计量
salary_stats = df.groupby(['City', 'Age Group'])['Salary'].agg(['mean', 'min', 'max'])
print("按城市和年龄分组计算薪资统计量:\n", salary_stats)
创建数据透视表

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/wuShiJingZuo/article/details/140564308

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值