文集文档索引

Pandas


  • 文集信息
  • 目录大纲
  • 最新文档
  • 知识宇宙

文集详情

文集导读

Pandas Pandas:Python数据分析的瑞士军刀 1. Pandas的核心数据结构:Series和DataFrame Pandas基于两种主要的数据结构: Series: 一维带标签的数组,类似于NumPy的ndarray,但每个元素都有一个与之关联的标签(索引)。 DataFrame: 二维表格型数据结构,可以看作是Series的容器。它由多个Series组成,每个Series代表一列,并且所有列共享相同的索引。 2. DataFrame的创建与导入 DataFrame可以通过多种方式创建,包括: 字典(如上面的例子) 列表的列表 NumPy数组 其他DataFrame 从外部文件(CSV, Excel, SQL数据库等)导入 3. 数据访问与选择 Pandas提供了多种方式来访问和选择DataFrame中的数据: 列选择: 使用列名 或 行选择: 使用 (基于标签) 或 (基于位置) 条件选择: 使用布尔索引 4. 数据清洗 数据清洗是数据分析的关键步骤,Pandas提供了丰富的功能来处理缺失值、重复值和异常值: 处理缺失值: , , , 处理重复值: , 数据类型转换: 5. 数据转换与操作 Pandas提供了强大的数据转换和操作功能: 添加/删除列: , 排序: 分组: 合并: , 应用函数: , 6.

Pandas

Pandas:Python数据分析的瑞士军刀

1. Pandas的核心数据结构:Series和DataFrame

Pandas基于两种主要的数据结构:

  • Series: 一维带标签的数组,类似于NumPy的ndarray,但每个元素都有一个与之关联的标签(索引)。

  • DataFrame: 二维表格型数据结构,可以看作是Series的容器。它由多个Series组成,每个Series代表一列,并且所有列共享相同的索引。

import pandas as pd # 创建Series data = [10, 20, 30, 40, 50] index = ['a', 'b', 'c', 'd', 'e'] s = pd.Series(data, index=index) print("Series:\n", s) # 创建DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 28, 22], 'City': ['New York', 'London', 'Paris', 'Tokyo']} df = pd.DataFrame(data) print("\nDataFrame:\n", df)

2. DataFrame的创建与导入

DataFrame可以通过多种方式创建,包括:

  • 字典(如上面的例子)

  • 列表的列表

  • NumPy数组

  • 其他DataFrame

  • 从外部文件(CSV, Excel, SQL数据库等)导入

# 从CSV文件导入 df = pd.read_csv('data.csv') # 假设有一个名为data.csv的文件 # 从Excel文件导入 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 从SQL数据库导入 import sqlite3 conn = sqlite3.connect('database.db') df = pd.read_sql_query("SELECT * FROM employees", conn) conn.close()

3. 数据访问与选择

Pandas提供了多种方式来访问和选择DataFrame中的数据:

  • 列选择: 使用列名 df['ColumnName']df.ColumnName

  • 行选择: 使用 .loc[] (基于标签) 或 .iloc[] (基于位置)

  • 条件选择: 使用布尔索引 df[df['ColumnName'] > value]

# 选择 'Age' 列 ages = df['Age'] print("Ages:\n", ages) # 选择第一行 (基于位置) first_row = df.iloc[0] print("\nFirst Row:\n", first_row) # 选择 'Name' 为 'Alice' 的行 (基于标签和条件) alice = df.loc[df['Name'] == 'Alice'] print("\nAlice:\n", alice) # 选择 'Age' 大于 25 的所有行 older_than_25 = df[df['Age'] > 25] print("\nOlder than 25:\n", older_than_25)

4. 数据清洗

数据清洗是数据分析的关键步骤,Pandas提供了丰富的功能来处理缺失值、重复值和异常值:

  • 处理缺失值: .isnull(), .notnull(), .dropna(), .fillna()

  • 处理重复值: .duplicated(), .drop_duplicates()

  • 数据类型转换: .astype()

import numpy as np # 创建包含缺失值的DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', None], 'Age': [25, np.nan, 28, 22, 30], 'City': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']} df = pd.DataFrame(data) # 检测缺失值 print("Missing Values:\n", df.isnull()) # 填充缺失值 df['Age'].fillna(df['Age'].mean(), inplace=True) # 使用平均值填充 df['Name'].fillna('Unknown', inplace=True) # 使用 'Unknown' 填充 print("\nDataFrame after filling missing values:\n", df) # 删除包含缺失值的行 df_cleaned = df.dropna() print("\nDataFrame after dropping missing values:\n", df_cleaned) # 检测重复行 data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice'], 'Age': [25, 30, 28, 25], 'City': ['New York', 'London', 'Paris', 'New York']} df = pd.DataFrame(data) print("Duplicated Rows:\n", df.duplicated()) # 删除重复行 df_no_duplicates = df.drop_duplicates() print("\nDataFrame after dropping duplicates:\n", df_no_duplicates) #数据类型转换 df['Age'] = df['Age'].astype(int) print("\nDataFrame after type conversion:\n", df.dtypes)

5. 数据转换与操作

Pandas提供了强大的数据转换和操作功能:

  • 添加/删除列: df['NewColumn'] = ..., df.drop('ColumnName', axis=1)

  • 排序: .sort_values()

  • 分组: .groupby()

  • 合并: .concat(), .merge()

  • 应用函数: .apply(), .map()

# 添加新列 df['Salary'] = [60000, 70000, 65000, 55000] print("DataFrame with Salary:\n", df) # 删除列 df = df.drop('City', axis=1) print("\nDataFrame after dropping City:\n", df) # 排序 df_sorted = df.sort_values(by='Age', ascending=False) print("\nSorted DataFrame:\n", df_sorted) # 分组 grouped = df.groupby('Name')['Salary'].mean() print("\nGrouped data:\n", grouped) # 应用函数 def increase_salary(salary): return salary * 1.1 df['Salary'] = df['Salary'].apply(increase_salary) print("\nDataFrame after applying function:\n", df) # 合并DataFrame data2 = {'Name': ['Eve', 'Frank'], 'Age': [27, 32], 'Salary': [75000, 80000]} df2 = pd.DataFrame(data2) df_combined = pd.concat([df, df2], ignore_index=True) print("\nCombined DataFrame:\n", df_combined) #合并DataFrame data3 = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Department': ['Sales', 'Marketing', 'Engineering', 'HR']} df3 = pd.DataFrame(data3) df_merged = pd.merge(df, df3, on='Name', how='left') #left, right, inner, outer print("\nMerged DataFrame:\n", df_merged)

6. 数据分析与统计

Pandas提供了丰富的统计函数:

  • .describe(): 描述性统计

  • .mean(), .median(), .std(), .min(), .max(), .count()

  • .value_counts(): 统计唯一值出现的次数

  • .corr(): 计算相关系数

# 描述性统计 print("Descriptive Statistics:\n", df.describe()) # 平均年龄 mean_age = df['Age'].mean() print("\nMean Age:", mean_age) # 值计数 city_counts = df['Name'].value_counts() print("\nCity Counts:\n", city_counts) # 相关系数 correlation = df['Age'].corr(df['Salary']) print("\nCorrelation between Age and Salary:", correlation)

7. 使用Mermaid图可视化数据处理流程

可以使用Mermaid图来可视化Pandas数据处理流程,帮助理解各个步骤之间的关系。

8. Pandas的进阶应用

除了以上基础功能,Pandas还有许多高级应用,例如:

  • 时间序列数据处理: Pandas对时间序列数据有很好的支持,可以进行时间序列分析和预测。

  • 多层索引: DataFrame可以拥有多层索引,方便处理复杂的数据结构。

  • 性能优化: Pandas底层使用了NumPy,可以通过向量化操作提高性能。

目录大纲

    最新文档

    知识宇宙

    正在加载知识图谱...


    转发