Python Pandas 实践学习笔记(1)
Python Pandas 教程
Pandas是一个开源的、BSD许可证的Python库,为Python编程语言提供高性能、易于使用的数据结构和数据分析工具。Python与Pandas在学术和商业领域都被广泛应用,包括金融、经济、统计学、分析等领域。在本教程中,我们将学习Python Pandas的各种特性以及如何在实践中使用它们。
教程对象
本教程适用于那些想要学习Pandas基础知识和各种函数的人。对于从事数据清洗和分析的人来说尤其有用。完成本教程后,您将有一个中等水平的专业知识,从这个水平上可以进一步提升自己的能力。
先决条件
您应该对计算机编程术语有基本的了解。对任何一种编程语言的基本理解都是一个加分项。Pandas库使用了NumPy的大部分功能。建议您在继续本教程之前先阅读我们的NumPy教程。您可以从下面的链接中访问它 − NumPy 教程
Pip install pandas
Pandas应用
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。
Pandas 是数据分析的利器,它不仅提供了高效、灵活的数据结构,还能帮助你以极低的成本完成复杂的数据操作和分析任务。
Pandas 提供了丰富的功能,包括:
- 数据清洗:处理缺失数据、重复数据等。
- 数据转换:改变数据的形状、结构或格式。
- 数据分析:进行统计分析、聚合、分组等。
- 数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。
数据读取与写入
使用pd.read_csv()
读取CSV文件,pd.read_excel()
读取Excel文件,pd.to_csv()
写入CSV文件。
示例:
import pandas as pd
df = pd.read_csv('data.csv')
df.to_csv('output.csv', index=False)
数据预览
通过df.head()
查看前5行数据,df.tail()
查看后5行数据,df.info()
查看数据类型和缺失值。
示例:
df.head(10) # 查看前10行
df.info() # 显示数据类型和内存使用
数据筛选
使用布尔索引筛选满足条件的数据。
示例:
filtered_data = df[df['age'] > 30]
specific_columns = df[['name', 'age']]
数据排序
通过df.sort_values()
按列排序。
示例:
sorted_df = df.sort_values('salary', ascending=False)
缺失值处理
使用df.isnull()
检查缺失值,df.dropna()
删除缺失值,df.fillna()
填充缺失值。
示例:
df.dropna(inplace=True)
df['age'].fillna(df['age'].mean(), inplace=True)
数据分组与聚合
通过df.groupby()
分组并聚合数据。
示例:
grouped = df.groupby('department')['salary'].mean()
数据合并
使用pd.concat()
纵向合并数据,pd.merge()
横向合并数据。
示例:
merged_df = pd.merge(df1, df2, on='id')
combined_df = pd.concat([df1, df2])
数据透视表
通过pd.pivot_table()
创建透视表。
示例:
pivot = pd.pivot_table(df, values='sales', index='region', columns='month')
时间序列处理
将字符串转换为时间类型并提取年份、月份。
示例:
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
数据去重
使用df.drop_duplicates()
删除重复行。
示例:
df_unique = df.drop_duplicates(subset=['name'])
列重命名
通过df.rename()
修改列名。
示例:
df.rename(columns={'old_name': 'new_name'}, inplace=True)
数据类型转换
使用astype()
转换列数据类型。
示例:
df['age'] = df['age'].astype(int)
条件修改数据
通过np.where()
或df.loc
条件修改数据。
示例:
import numpy as np
df['status'] = np.where(df['score'] >= 60, 'Pass', 'Fail')
字符串操作
使用str
方法处理字符串列。
示例:
df['name'] = df['name'].str.upper()
df['email_domain'] = df['email'].str.split('@').str[1]
随机采样
通过df.sample()
随机抽取数据。
示例:
sampled_df = df.sample(n=100, random_state=42)
分箱操作
使用pd.cut()
将连续数据分箱。
示例:
df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 60, 100], labels=['child', 'young', 'adult', 'senior'])
多条件筛选
结合|
实现多条件筛选。
示例:
filtered = df[(df['age'] > 25) & (df['department'] == 'HR')]
列计算
直接对列进行数学运算。
示例:
df['total'] = df['price'] * df['quantity']
自定义函数应用
通过apply()
应用自定义函数。
示例:
def categorize(x): return 'High' if x > 1000 else 'Low'
df['category'] = df['sales'].apply(categorize)
保存为Excel多Sheet
使用pd.ExcelWriter
保存多个DataFrame到同一Excel文件的不同Sheet。
示例:
with pd.ExcelWriter('output.xlsx') as writer: df1.to_excel(writer, sheet_name='Sheet1') df2.to_excel(writer, sheet_name='Sheet2')
数据结构
Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。
-
Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成。
-
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
Pandas 是 Python 数据科学领域中不可或缺的工具之一,它的灵活性和强大的功能使得数据处理和分析变得更加简单和高效。
创建 Pandas Series
使用列表创建 Series:
import pandas as pd
s = pd.Series([1, 3, 5, 7, 9])
通过字典创建 Series(键为索引):
data = {'a': 10, 'b': 20, 'c': 30}
s = pd.Series(data)
指定自定义索引:
s = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
使用 NumPy 数组创建:
import numpy as np
arr = np.array([1.1, 2.2, 3.3])
s = pd.Series(arr)
创建空 Series:
s = pd.Series(dtype=float)
基本操作
查看前 N 项:
s.head(3)
查看后 N 项:
s.tail(2)
获取索引:
s.index
获取值数组:
s.values
检查数据类型:
s.dtype
索引与选择
通过位置索引:
s[1]
通过标签索引:
s['a']
使用 iloc 按位置选择:
s.iloc[0:2]
使用 loc 按标签选择:
s.loc[['x', 'y']]
布尔索引筛选:
s[s > 2]
数据处理
计算描述性统计:
s.describe()
求和:
s.sum()
求平均值:
s.mean()
最大值:
s.max()
最小值:
s.min()
修改操作
修改单个值:
s['a'] = 100
批量修改值:
s[['a', 'b']] = [50, 60]
添加新元素:
s['d'] = 40
删除元素:
s.drop('a', inplace=True)
重命名索引:
s.ren