个人pandas学习笔记

 Pandas 简介

Pandas 是基于 NumPy 的一个数据分析库,提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。

 基本数据结构

  • Series:一维数组结构,可以包含任何数据类型。
  • DataFrame:二维表格型数据结构,类似于 Excel 中的表格,可以包含多种数据类型。

 数据读取与写入

  • 使用 pd.read_csv() 读取 CSV 文件。
  • 使用 pd.read_excel() 读取 Excel 文件。
  • 使用 pd.read_sql() 读取 SQL 数据库。
  • 使用 pd.to_csv() 将数据写入 CSV 文件。
  • 使用 pd.to_excel() 将数据写入 Excel 文件。

4. 数据清洗

  • 缺失值处理dropna() 删除缺失值,fillna() 填充缺失值。
  • 重复值处理drop_duplicates() 删除重复行。
  • 数据类型转换astype() 转换数据类型。

 数据选择

  • 索引和选择:使用 .loc[] 和 .iloc[] 进行数据选择。
  • 条件选择:使用布尔索引进行条件筛选。

数据操作

  • 添加和删除列df['new_column'] = ... 添加新列,df.drop() 删除列。
  • 行和列的重塑melt() 将宽格式转换为长格式,pivot() 将数据透视。

 数据合并

  • Concatenationpd.concat() 纵向或横向合并数据。
  • Mergepd.merge() 类似 SQL 的 JOIN 操作。

 数据分组

  • 使用 groupby() 对数据进行分组,然后应用聚合函数如 sum()mean()max() 等。

 数据转换

  • 重塑pivot_table() 创建数据透视表。
  • 聚合:对数据分组后进行聚合操作。

 时间序列分析

  • 处理时间序列数据,使用 pd.to_datetime() 转换时间格式。
  • 时间戳排序,重采样等。

 数据可视化

  • Pandas 可以与 Matplotlib 集成,使用 df.plot() 进行数据可视化。

 性能优化

  • 使用 categorical 类型优化内存使用。
  • 使用 eval() 和 query() 进行快速数据筛选。

 处理大型数据集

  • 使用 chunksize 参数分块读取大型文件。

进阶功能

  • 使用 apply() 函数进行自定义操作。
  • 使用 rolling()expanding() 等窗口函数进行时间序列分

python

import pandas as pd # 创建一个 DataFrame data = { 'Column1': [1, 2, 3, 4], 'Column2': ['a', 'b', 'c', 'd'], 'Column3': [1.1, 2.2, 3.3, 4.4] } df = pd.DataFrame(data) # 数据读取 df_csv = pd.read_csv('file.csv') # 数据清洗 df.dropna(inplace=True) # 删除缺失值 df.fillna(value=0, inplace=True) # 填充缺失值为0 # 数据选择 selected_data = df.loc[0:2, 'Column1':'Column2'] # 选择前两行的Column1和Column2 # 数据合并 df_concatenated = pd.concat([df1, df2], axis=0) # 纵向合并 # 数据分组 grouped = df.groupby('Column2') # 数据转换 pivot_table = df.pivot_table(values='Column3', index='Column1', columns='Column2') # 数据可视化 df['Column1'].plot() # 性能优化 df['Column2'] = df['Column2'].astype('category')

创建使用Pandas库的DataFrame对象

frame = pd.DataFrame(np.arange(8).reshape((2, 4)), 
                     index=['2', '1'], 
                     columns=['d', 'a', 'b', 'c'])
frame

这段代码用于创建一个2行4列的DataFrame,其中索引为'2'和'1',列名为'd', 'a', 'b', 'c'。下面是代码执行后DataFrame的样子:

import pandas as pd import numpy as np # 创建一个2行4列的DataFrame frame = pd.DataFrame(np.arange(8).reshape((2, 4)), index=['2', '1'], columns=['d', 'a', 'b', 'c']) # 显示DataFrame print(frame)

执行这段代码后,DataFrame frame 将显示如下:

 

d a b c 2 0 1 2 3 1 4 5 6 7

这里,np.arange(8) 生成一个0到7的数组,.reshape((2, 4)) 将这个数组重新排列成一个2行4列的数组,然后这个数组被用作DataFrame的数据。索引和列名通过参数指定。

基于某列升/降序排列

import pandas as pd

# 示例数据
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 0, 2, 1]
}
df = pd.DataFrame(data)

# 按列'C'的值进行升序排序
sorted_df = df.sort_values(by='C', ascending=True)
print(sorted_df)

在Python中,frame.sort_values(by='c', ascending=True) 是一个用于对pandas DataFrame进行排序的语句。这里简要解释一下这个语句的组成部分:

  • frame:这通常是一个pandas DataFrame对象的名称。
  • sort_values():这是DataFrame的一个方法,用于根据某些列的值对数据进行排序。
  • by='c':这指定了排序的列名。在这个例子中,排序是基于列名为'c'的列。
  • ascending=True:这指定了排序的方向。如果设置为True,则表示按升序排序;如果设置为False,则表示按降序排序。

输出

 A  B   C
3  4  8   1
2  3  7   2
0  1  5   9
1  2  6   0

在pandas中,DataFrame是一个二维标签数据结构,可以存储不同类型的数据。每个DataFrame都包含多个列,每列可以有不同的名称。这些列名通常用于引用数据。

当你看到“排序是基于列名为'c'的列”时,这里的意思是:

  1. 列名:在DataFrame中,每一列都有一个名字。比如,列名可能是'A'、'B'、'C'等。
  2. 排序sort_values()方法用于对DataFrame中的行进行排序。
  3. 依据by='c'参数告诉sort_values()方法,排序的依据是列名为'c'的这一列的值。

具体来说,假设你有一个DataFrame如下:

 

python

import pandas as pd data = { 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 0, 2, 1] } df = pd.DataFrame(data) print(df)

输出可能是:

 

A B C 0 1 5 9 1 2 6 0 2 3 7 2 3 4 8 1

如果你执行:

 

python

sorted_df = df.sort_values(by='C', ascending=True) print(sorted_df)

输出将变为:

 

A B C 1 2 6 0 3 4 8 1 2 3 7 2 0 1 5 9

在这个例子中,DataFrame df 首先被创建,然后使用sort_values(by='C', ascending=True)方法按列'C'的值进行升序排序。这意味着所有的行将根据列'C'中的值从小到大重新排列。

当你使用sort_values()方法对DataFrame进行排序时:

  • by='c':这指定了排序的依据是列名为'c'的列。
  • ascending=True:这指定了排序的方向是升序。

因此,整个DataFrame的行将会根据列'c'中的值进行排序,而其他列的值会相应地跟随行的变化而变化,但它们本身并不单独进行排序。这里是一个具体的例子:

假设有以下DataFrame:

 

python

import pandas as pd data = { 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 0, 2, 1] } df = pd.DataFrame(data) print("原始DataFrame:") print(df)

输出:

 

A B C 0 1 5 9 1 2 6 0 2 3 7 2 3 4 8 1

执行排序:

 

python

sorted_df = df.sort_values(by='C', ascending=True) print("排序后的DataFrame:") print(sorted_df)

输出:

 

A B C 1 2 6 0 3 4 8 1 2 3 7 2 0 1 5 9

在这个例子中:

  • 列'C'的值从0到9进行了升序排序。
  • 列'A'和列'B'的值则根据列'C'的排序结果进行相应的调整,但它们本身并没有单独进行排序。

因此,最终的排序结果中,列'C'的值是从小到大排列的,而列'A'和列'B'的值则是按照列'C'的排序顺序排列的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值