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()将数据透视。
数据合并
- Concatenation:
pd.concat()纵向或横向合并数据。 - Merge:
pd.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'的列”时,这里的意思是:
- 列名:在DataFrame中,每一列都有一个名字。比如,列名可能是'A'、'B'、'C'等。
- 排序:
sort_values()方法用于对DataFrame中的行进行排序。 - 依据:
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'的排序顺序排列的。
398

被折叠的 条评论
为什么被折叠?



