Python数据分析Pandas全攻略

 更新时间:2025年08月01日 14:01:34   作者:晨曦543210  
在Python中,Pandas是一个非常强大的数据处理和分析库,广泛应用于数据科学和数据分析领域,接下来通过本文介绍Python数据分析Pandas全攻略包括安装与导入示例,感兴趣的朋友跟随小编一起看看吧

一、简介

Python 的 pandas 库是数据分析的核心工具,专门处理结构化数据(如表格、时间序列等)。

二、安装与导入

1. 安装

pip install pandas

2. 导入

import pandas as pd  # 行业标准缩写

三、核心数据结构

1.Series- 一维带标签

# 创建 Series
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
a    10
b    20
c    30
d    40
dtype: int64

2.DataFrame- 二维表格(核心)

# 创建 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Paris', 'London']
}
df = pd.DataFrame(data)
print(df)
      Name  Age      City
0    Alice   25  New York
1      Bob   30     Paris
2  Charlie   35    London

四、数据读写

1. 读取数据(支持多种格式)

# 读取 CSV
df = pd.read_csv('data.csv', encoding='utf-8')
# 读取 Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取 JSON(与之前学习的 json 库结合)
df = pd.read_json('data.json')

2. 保存数据

# 保存为 CSV
df.to_csv('output.csv', index=False)  # 不保存行索引

# 保存为 Excel
df.to_excel('output.xlsx', sheet_name='Results')

五、数据探索

1. 查看数据

查看数据
方法作用示例
df.head(n)查看前n行df.head(3)
df.tail(n)查看后n行df.tail(2)
df.info()显示数据概览df.info()
df.describe()统计数值列df.describe()

2. 选择数据

# 选择列
ages = df['Age']          # 返回 Series
name_city = df[['Name', 'City']]  # 返回 DataFrame
# 选择行
row_1 = df.iloc[0]        # 通过位置选择
row_bob = df.loc[df['Name'] == 'Bob']  # 通过条件选择
# 切片
subset = df[1:3]          # 第2-3行(左闭右开)

六、数据清洗

1. 处理缺失值

# 检测缺失值
print(df.isnull())
# 删除含缺失值的行
df_clean = df.dropna()
# 填充缺失值
df_filled = df.fillna({'Age': df['Age'].mean()})  # 用平均值填充年龄列

2. 去重

df_unique = df.drop_duplicates(subset=['Name'])  # 根据姓名去重

3. 类型转换

df['Age'] = df['Age'].astype(float)  # 转换为浮点型

七、数据分析

1. 过滤数据

# 筛选年龄 > 25 的记录
adults = df[df['Age'] > 25]
# 复合条件(注意用 & 代替 and)
young_in_paris = df[(df['Age'] < 30) & (df['City'] == 'Paris')]

2. 分组聚合

# 按城市分组,计算平均年龄
city_stats = df.groupby('City')['Age'].mean()
print(city_stats)
City
London      35.0
New York    25.0
Paris       30.0
Name: Age, dtype: float64

3. 排序

df_sorted = df.sort_values(by='Age', ascending=False)  # 按年龄降序

八、数据合并

1. 横向合并(类似 SQL JOIN)

df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['A', 'B']})
df2 = pd.DataFrame({'ID': [2, 3], 'Age': [25, 30]})
# 内连接
merged = pd.merge(df1, df2, on='ID', how='inner')

2. 纵向合并(类似 SQL UNION)

combined = pd.concat([df1, df2], axis=0)  # axis=0 表示行方向

九、时间序列处理

# 创建时间序列
date_rng = pd.date_range(start='2023-01-01', end='2023-01-05', freq='D')
ts = pd.Series([10, 20, 15, 30, 25], index=date_rng)
# 重采样(按周计算平均值)
weekly_avg = ts.resample('W').mean()

十、可视化(需安装 matplotlib)

import matplotlib.pyplot as plt
# 绘制年龄分布直方图
df['Age'].plot(kind='hist', bins=5)
plt.title('Age Distribution')
plt.show()

十一、常见错误处理

1.KeyError

# 检查列名是否存在
if 'Salary' in df.columns:
    print(df['Salary'])

2. 内存不足

  • 使用 df.info(memory_usage='deep') 查看内存占用

  • 用 df.select_dtypes(include='number') 选择数值列处理

十二、完整工作流示例

# 1. 读取数据
df = pd.read_csv('sales.csv')
# 2. 数据清洗
df = df.dropna(subset=['Price'])
df['Date'] = pd.to_datetime(df['Date'])
# 3. 分析
monthly_sales = df.groupby(pd.Grouper(key='Date', freq='M'))['Price'].sum()
# 4. 可视化
monthly_sales.plot(kind='bar')
plt.title('Monthly Sales')
plt.show()

十三、常用函数

1、数据读取与保存

函数作用示例
pd.read_csv()读取 CSV 文件df = pd.read_csv('data.csv')
pd.read_excel()读取 Excel 文件df = pd.read_excel('data.xlsx')
pd.read_json()读取 JSON 文件df = pd.read_json('data.json')
df.to_csv()保存为 CSVdf.to_csv('output.csv', index=False)
df.to_excel()保存为 Exceldf.to_excel('output.xlsx')

2、数据查看与筛选

函数/方法作用示例
df.head(n)查看前 n 行df.head(5)
df.tail(n)查看后 n 行df.tail(3)
df.info()显示数据信息(列名、类型、非空值)df.info()
df.describe()统计数值列的基本统计量df.describe()
df.shape获取 DataFrame 的维度print(df.shape) → 输出 (行数, 列数)
df.columns获取所有列名df.columns.tolist()
df.loc[]标签索引选择数据df.loc[2, 'Age'] → 选择第3行的Age列
df.iloc[]位置索引选择数据df.iloc[0:3, 1:4] → 选择前3行,第2-4列
df.query()用表达式筛选数据df.query('Age > 30 & City == "London"')

3、数据清洗

函数/方法作用示例
df.dropna()删除缺失值df.dropna(subset=['Age'])
df.fillna()填充缺失值df.fillna({'Age': df['Age'].mean()})
df.drop_duplicates()删除重复行df.drop_duplicates(subset=['Name'])
df.rename()重命名列df.rename(columns={'old':'new'})
df.astype()转换数据类型df['Age'] = df['Age'].astype(int)
df.replace()替换特定值df.replace({'Male':'M', 'Female':'F'})

4、数据分析

函数/方法作用示例
df.groupby()分组聚合df.groupby('City')['Sales'].sum()
df.pivot_table()创建数据透视表pd.pivot_table(df, values='Sales', index='Region', columns='Year')
df.sort_values()按值排序df.sort_values('Age', ascending=False)
df.value_counts()统计唯一值频次df['City'].value_counts()
df.corr()计算列之间的相关系数df.corr()
df.merge()合并两个 DataFramepd.merge(df1, df2, on='ID')
pd.concat()拼接 DataFramepd.concat([df1, df2], axis=0)

5、数据操作

函数/方法作用示例
df.apply()对列/行应用函数df['Age'].apply(lambda x: x + 1)
df.map()对 Series 元素映射转换df['Gender'].map({'M':1, 'F':0})
df.assign()创建新列df.assign(Income = df['Salary']*12)
df.drop()删除列或行df.drop(columns=['Temp'])
df.where()条件筛选(保留满足条件的值)df.where(df['Age'] > 18)
df.melt()宽表转长表df.melt(id_vars=['Name'])

到此这篇关于Python数据分析Pandas全攻略的文章就介绍到这了,更多相关Python Pandas安装导入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何利用Python获取鼠标的实时位置

    如何利用Python获取鼠标的实时位置

    这篇文章主要给大家介绍了关于如何利用Python获取鼠标的实时位置的相关资料,主要利用的是pyautogui,一个自动化键鼠操作的Python类库,需要的朋友可以参考下
    2022-01-01
  • 利用Seaborn绘制20个精美的pairplot图

    利用Seaborn绘制20个精美的pairplot图

    本文记录的使用seaborn绘制pairplot图,主要是用来显示两两变量之间的关系(线性或非线性,有无较为明显的相关关系等),感兴趣的可以了解一下
    2022-07-07
  • Python中数字类型内置方法详解

    Python中数字类型内置方法详解

    在 Python 编程里,数字类型是极为基础且关键的数据类型,本文将深入介绍 Python 数字类型的内置方法,同时辅以详细的代码示例,需要的可以了解下
    2025-04-04
  • python打开文件的方式有哪些

    python打开文件的方式有哪些

    在本篇文章里小编给大家分享了关于python打开文件的方式,需要的朋友们可以学习参考下。
    2020-06-06
  • 对pyqt5之menu和action的使用详解

    对pyqt5之menu和action的使用详解

    今天小编就为大家分享一篇对pyqt5之menu和action的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Linux下使用python脚本执行BCP导入导出方式

    Linux下使用python脚本执行BCP导入导出方式

    这篇文章主要介绍了Linux下使用python脚本执行BCP导入导出方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 详解python中的index函数用法

    详解python中的index函数用法

    这篇文章主要介绍了详解python中的index函数用法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Windows环境打包python工程为可执行程序的详细过程

    Windows环境打包python工程为可执行程序的详细过程

    我的开发环境是windows7,然后系统是64位,安装的python和wxpython都是32位的,本文记录我怎样用pyinstaller打包我用python开发的工程,在网上搜索了很多资源,基本上都是不全的,所以我在这儿记录一下这个比较完整的过程,一起看看吧
    2024-01-01
  • 浅谈机器学习需要的了解的十大算法

    浅谈机器学习需要的了解的十大算法

    这篇文章主要介绍了浅谈机器学习需要的了解的十大算法,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python语言进阶知识点总结

    Python语言进阶知识点总结

    在本文中我们给学习PYTHON的朋友们总结了关于进阶知识点的全部内容,希望我们整理的内容能够帮助到大家。
    2019-05-05

最新评论