文章目录
- 一、什么是pandas
- 1. 起源与发展
- 2. 数据结构
- 3. 主要功能
- 4. 进阶功能
- 5. 总结
- 二、pandas核心方法
- 1. 数据读取与写入
- 2. 数据查看与选择
- 3. 数据清洗与处理
- 4. 数据统计与描述
- 5. 数据变形与转换
- 6. 数据合并与连接
- 7. 分组与聚合
- 8. 数据应用与自定义函数
- 9. 其他常用方法
- 三、主要方法使用示例
- 1. 查看数据
- 2. 选择数据
- 3. 数据清洗
- 4. 数据统计
- 5. 数据排序
- 6. 数据分组与聚合
- 7. 数据合并
- 8. 应用函数
- 9. 唯一值和计数
- 四、使用示例
- 参考
一、什么是pandas
Python的pandas包是一个强大的数据分析工具,它提供了丰富的数据结构和函数,使得数据清洗、处理和分析变得简单高效。以下是关于pandas包的详细介绍:
1. 起源与发展
- pandas最初由AQR Capital Management于2008年4月开发,作为金融数据分析工具。
- 它于2009年底开源,并由PyData开发团队继续开发和维护。
- pandas的名称来源于面板数据(panel data)和Python数据分析(data analysis)的结合。
2. 数据结构
- Series:一维数组结构,与NumPy的一维数组类似,但可以保存不同类型的数据,如字符串、布尔值、数字等。
- DataFrame:二维表格型数据结构,类似于R中的data.frame,可以理解为Series的容器。
- Panel:三维数组结构,可以理解为DataFrame的容器,不过在实际应用中较少使用。
3. 主要功能
- 数据读取:支持从多种格式的文件中读取数据,如CSV、Excel、SQL数据库等。
- 数据清洗:提供了处理缺失值、重复值和异常值的方法,如dropna()、fillna()和drop_duplicates()等。
- 数据转换:可以轻松地对数据进行排序、分组、透视等操作。
- 数据统计:提供了丰富的统计函数,如mean()、median()、std()等,用于计算数据的统计特征。
- 数据可视化:虽然pandas本身不专注于可视化,但它可以与其他可视化库(如matplotlib、seaborn等)无缝集成,实现数据的可视化展示。
4. 进阶功能
- 创建复杂数据结构:如从字典、列表、文件或数据库中创建DataFrame。
- 数据遍历:提供了apply()、iterrows()、itertuples()等方法来遍历数据。
- 数据修改:可以使用lambda匿名函数对数据进行批量修改。
- 新增数据:可以方便地向DataFrame中添加新行或新列。
5. 总结
pandas是一个功能强大且易于使用的Python数据分析包,它提供了丰富的数据结构和函数来简化数据处理和分析的过程。无论是初学者还是经验丰富的数据分析师,都可以利用pandas轻松地完成数据清洗、转换、统计和可视化等任务。
二、pandas核心方法
以下是一些Pandas的常用方法:
1. 数据读取与写入
- read_csv(file, …): 读取CSV文件并返回DataFrame。
- read_excel(file, …): 读取Excel文件并返回DataFrame。
- to_csv(file, …): 将DataFrame写入CSV文件。
- to_excel(file, …): 将DataFrame写入Excel文件。
2. 数据查看与选择
- head(n=5): 返回前n行数据。
- tail(n=5): 返回后n行数据。
- loc[label, …]: 基于标签选择数据。
- iloc[index, …]: 基于位置选择数据。
3. 数据清洗与处理
- dropna(axis=0, …): 删除包含缺失值的行或列。
- fillna(value=None, …): 用指定值填充缺失值。
- replace(to_replace, value=None, …): 替换指定值。
- drop_duplicates(subset=None, …): 删除重复行。
4. 数据统计与描述
- describe(): 生成描述性统计信息,包括均值、标准差、最小值、25%、50%、75%分位数和最大值。
- mean(), median(), std(), var(), min(), max(): 计算数据的各种统计量。计算平均值、中位数、标准差、方差、最小值、最大值。
- count(): 计算非空值的数量。
- corr(method=‘pearson’, …): 计算相关性系数。
5. 数据变形与转换
- sort_values(by, …): 按照指定列进行排序。
- reset_index(drop=False, …): 重置索引,drop参数决定是否保留原索引作为一列。
- set_index(keys, …): 将指定列设置为索引。
- melt(id_vars=None, …): 将DataFrame从宽格式转换为长格式。
- pivot(index=None, columns=None, values=None): 创建数据透视表。
- pivot_table(values, index=None, columns=None, aggfunc=‘mean’, …): 创建一个数据透视表,可以使用不同的聚合函数。
6. 数据合并与连接
- merge(right, how=‘left’, …): 将两个DataFrame按指定方式进行合并,类似于SQL类型的合并。
- concat(objs, axis=0, …): 在指定轴上连接两个或多个DataFrame。
- join(other, on=None, how=‘left’, …): 基于索引或指定列进行连接。
7. 分组与聚合
- groupby(by=None, axis=0, …): 对数据进行分组。
- aggregate(func, axis=0, …) 或 agg(func, axis=0, …): 对分组后的数据进行聚合计算,如求和、平均值等。可以应用多种聚合函数。
8. 数据应用与自定义函数
- apply(func, axis=0, …): 对DataFrame的列或行应用自定义函数。可以传入lambda函数或定义好的函数进行操作。
- map(func, …): 对Series的每个元素应用函数,通常用于数据转换或映射新值。
- applymap(func): 对DataFrame中的每个元素应用函数。
9. 其他常用方法
- unique(): 获取Series中的唯一值。
- nunique(): 获取Series中唯一值的数量。
- isnull() 和 notnull(): 检测缺失值和非缺失值,返回一个布尔型Series。
- astype(dtype, …): 转换DataFrame或Series的数据类型。
- copy(deep=True): 复制DataFrame或Series,deep参数决定是否进行深拷贝。
这些方法涵盖了Pandas库的大部分常用功能,可以满足数据清洗、处理、分析和可视化的需求。在实际应用中,可以根据具体任务选择合适的方法进行数据处理和分析。
三、主要方法使用示例
以下是一些pandas主要方法的使用示例代码:
首先,我们导入pandas库并创建一个简单的DataFrame作为示例数据。
import pandas as pd
# 创建一个简单的DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 32, 18, 47],
'City': ['New York', 'Paris', 'London', 'Tokyo'],
'Score': [85, 90, 78, 92]
}
df = pd.DataFrame(data)现在,我们将通过示例代码展示一些pandas的主要方法:
1. 查看数据
# 查看前几行数据
print(df.head(2)) # 查看前两行
# 查看后几行数据
print(df.tail(2)) # 查看最后两行2. 选择数据
# 选择单列
print(df['Name']) # 选择Name列
# 选择多列
print(df[['Name', 'Age']]) # 选择Name和Age列
# 使用条件选择行
print(df[df['Age'] > 30]) # 选择年龄大于30的行3. 数据清洗
# 替换Score列中的值
df['Score'] = df['Score'].replace(90, 95) # 将Score列中的90替换为95
# 删除包含缺失值的行(假设我们在Age列中引入了一个NaN值)
df.loc[2, 'Age'] = # 将Charlie的年龄设置为缺失值
df_cleaned = df.dropna(subset=['Age']) # 删除Age列有缺失值的行
print(df_cleaned)4. 数据统计
# 描述性统计
print(df['Age'].describe()) # 对Age列进行描述性统计
# 计算相关性系数
print(df.corr()) # 计算各列之间的相关性系数5. 数据排序
# 按Score列降序排序
print(df.sort_values(by='Score', ascending=False))6. 数据分组与聚合
# 按City列分组,并计算每组的平均年龄
print(df.groupby('City')['Age'].mean())7. 数据合并
# 创建一个新的DataFrame用于合并
df2 = pd.DataFrame({
'Name': ['Bob', 'Eve'],
'Occupation': ['Engineer', 'Doctor']
})
# 根据Name列合并df和df2
df_merged = pd.merge(df, df2, on='Name', how='left')
print(df_merged)8. 应用函数
# 对Age列应用一个函数,将年龄增加1岁
df['Age'] = df['Age'].apply(lambda x: x + 1 if pd.notnull(x) else x)
print(df)9. 唯一值和计数
# 获取City列的唯一值
print(df['City'].unique())
# 获取City列唯一值的数量
print(df['City'].nunique())这些示例代码涵盖了pandas库中的一些主要方法。当然,pandas提供了非常丰富的功能,这里只是展示了其中的一部分。你可以根据自己的需求进一步探索和学习pandas的更多功能。
四、使用示例
以下是一个简单的使用pandas进行数据处理的实际例子。
假设你有一个CSV文件,里面包含了某公司销售数据,包括销售日期、产品名称、销售量和销售额。你想要对这个数据文件进行分析,了解各个产品的销售情况。
首先,你需要安装pandas库(如果还没有安装的话):
pip install pandas然后,你可以使用以下Python代码来读取CSV文件,并进行一些基本的数据分析:
import pandas as pd
# 读取CSV文件
data = pd.read_csv('sales_data.csv')
# 查看数据的前几行
print(data.head())
# 统计每个产品的销售总量
sales_volume_by_product = data.groupby('产品名称')['销售量'].sum()
print('-'*5,'统计每个产品的销售总量','-'*5)
print(sales_volume_by_product)
# 统计每个产品的平均销售额
average_sales_by_product = data.groupby('产品名称')['销售额'].mean()
print('-'*5,'统计每个产品的平均销售额','-'*5)
print(average_sales_by_product)
# 找出销售额最高的产品
top_selling_product = data.groupby('产品名称')['销售额'].sum().idxmax()
print('-'*5,'找出销售额最高的产品','-'*5)
print(f"销售额最高的产品是:{top_selling_product}")
# 过滤出销售额大于某个阈值(比如3000)的销售记录
high_sales = data[data['销售额'] > 3000]
print('-'*5,'过滤出销售额大于某个阈值','-'*5)
print(high_sales)
# 按照销售日期对销售量进行累加,以了解销售趋势
cumulative_sales = data.groupby('销售日期')['销售量'].cumsum()
print('-'*5,'按照销售日期对销售量进行累加','-'*5)
print(cumulative_sales)在这个例子中,我们首先使用pd.read_csv函数读取了一个名为sales_data.csv的CSV文件,并将其存储在名为data的DataFrame对象中。然后,我们使用groupby方法按产品名称对数据进行分组,并计算了每个产品的销售总量和平均销售额。接着,我们找出了销售额最高的产品,并过滤出了销售额大于3000的销售记录。最后,我们按销售日期对销售量进行了累加,以了解销售趋势。
请注意,这个例子假设CSV文件具有相应的列名(如’销售日期’、‘产品名称’、‘销售量’和’销售额’)。你需要根据你的实际数据文件格式和内容来调整代码。
参考
















