开发者

Python数据分析Pandas全攻略

目录
  • 一、简介
  • 二、安装与导入
    • 1. 安装
    • 2. 导入
  • 三、核心数据结构
    • 1.Series- 一维带标签
    • 2.DataFrame- 二维表格(核心)
  • 四、数据读写
    • 1. 读取数据(支持多种格式)
    • 2. 保存数据
  • 五、数据探索
    • 1. 查看数据
    • 2. 选择数据
  • 六、数据清洗
    • 1. 处理缺失值
    • 2. 去重
    • 3. 类型转换
  • 七、数据分析
    • 1. 过滤数据
    • 2. 分组聚合
    • 3. 排序
  • 八、数据合并
    • 1. 横向合并(类似 SQL JOIN)
    • 2. 纵向合并(类似 SQL UNION)
  • 九、时间序列处理
    • 十、可视化(需安装 matplotlib)
      • 十一、常见错误处理
        • 1.KeyError
        • 2. 内存不足
      • 十二、完整工作流示例
        • 十三、常用函数

          一、简介

          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 javascript     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'])  # python根据姓名去重

          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('dhttp://www.devze.comata.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&#wCBjQ39;:'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安装导入内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

          0

          上一篇:

          下一篇:

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          最新开发

          开发排行榜