Python学习笔记——Pandas

目录

数据读取与存储

读取.csv 文件

存储.csv 文件

读取excel文件

存储excel文件

数据引用

选择行

同时选择行与列

数据清理

判断是否有缺失值 .isna()

删除缺失值 .dropna()

判断离群点

箱型图

数据集合并

横向合并 .merge()

纵向合并 pd.concat()

数据聚集

分组——groupby函数

聚合计算

apply函数

agg函数


数据读取与存储

读取.csv 文件

df = pd.read_csv('path_to_file.csv')

存储.csv 文件

df.to_csv('path_to_file.csv', index=True)

读取excel文件

df = pd.read_excel('path_to_file.xls', sheet_name='Sheet1',engine=None) 

存储excel文件

df.to_excel('path_to_file.xlsx', sheet_name='Sheet1') 

数据引用

选择行

df.loc[label] #用标签选择行

label可填:

单个标签,例如 ['a' ](自定义标签), 1 (默认标签),返回a行( Series 类型)

标签列表,例如 ['a','b','c'] ,返回 a,b,c行(DataFrame 类型)

标签切片,例如[ 'a':'c'] ,返回a行-c行( DataFrame 类型)

df.iloc[rowNum] #用位置选择行

rowNum(row number)可填:

单个整数,如[1],返回的是第2行( Series 类型)

整数列表,如[[0,2]],返回的是第1行和第3行(DataFrame 类型)

整数切片,例如[1:7] ,返回的是第2行至第8行

df.iloc[:] 表示选择所有行,返回的是 DataFrame 类型

同时选择行与列

df.loc[行标签,列名]

dfcaridx.loc['beta':'delta',['two','flag']]

df.iloc[行位置,列位置]

dfcar.iloc[1:3,[0,1]] # 切片与列表搭配选择DataFrame

数据清理

判断是否有缺失值 .isna()

df.isna()

典例:选择accept DataFrame中所有至少包含一个NaN值的行,并返回这些行的所有列

accept.loc[accept.isna().sum(axis=1)>0,:]

删除缺失值 .dropna()

DataFrame.dropna(axis=0, how='any', inplace=False)#dropna函数即删除缺失值

axis=0 #沿着行的方向进行操作

axis=1 #沿着列的方向进行操作

how='any' #只要包含缺失值,就删除相应的行或列,默认any

how='all' #只有当某行(列)所有值都是缺失值的时候,才删除该行(列)

判断离群点

箱型图

_ = df['列名'.plot(kind='box',figsize=(长度,高度),subplot=True)]

subplots=True: 这个参数指示 matplotlib 创建一个子图(subplot)网格,如果设置为 True,则每个选定的列都会在一个单独的子图上绘制箱形图。

数据集合并

横向合并 .merge()

df_left.merge(df_right, how='inner', left_index=False, right_index=False)

how='inner' #连接左右两个 DataFrame 的 index 中共同出现的行

how='outer' #连接左右两个 DataFrame 的所有 index

how='inner' #连接左右两个 DataFrame 的 index 中共同出现的行

  • left_index:布尔值,默认为False。如果设置为True,左DataFrame的索引将被用作合并键。这意味着左DataFrame的索引必须与右DataFrame的某个键匹配。

  • right_index:布尔值,默认为False。如果设置为True,右DataFrame的索引将被用作合并键。这意味着右DataFrame的索引必须与左DataFrame的某个键匹配。

        当使用left_index=Trueright_index=True时,两个DataFrame的索引将直接匹配,而不需要额外的键列。这通常用于两个DataFrame的索引已经完全匹配的情况。

纵向合并 pd.concat()

把多个具有相同列名的 DataFrame 按列衔接起来

pd.concat([df_1,df_2], axis=0, join='outer',ignore_index=False)

join :连接方式,可选值'inner'或者'outer' ,‘outer’ 表示连接两个 DataFrame 的外侧,保留所有原始索引。 ‘inner’ 表示只连接两个 DataFrame 的交集部分。

数据聚集

分组——groupby函数

df.groupby(by='列名/字典的键', axis=0, sort=True)

聚合计算

apply函数

df.apply('count/sum/mean/median/max/min',axis=0)

这串代码表示对数据集df沿着行的方向输出每行总和/平均值...

agg函数

df.groupby().agg('count/sum/mean/median/max/min')

eg:
df.groupby('key1').agg(['mean','std']) #只按照'key1'列的值进行分组后计算每列的平均值和标准差
df.groupby(['key1','key2'...]).agg({'data1': ['mean'], 'data2': ['std']})#按照‘key1’列、‘key2’列等列分组后对’data1‘列、‘data2’列分别计算平均值、标准差
  • agg函数是apply函数的一个别名,通常用于DataFrame对象。
  • 它接受一个字典,字典的键是列名,值是对应的函数或函数列表。
  • agg函数会对每个应用指定的函数或函数列表,并返回一个包含结果的新DataFrame。

Sec1

这篇笔记主要介绍了Pandas模块的基本操作和使用方法。PandasPython中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维表格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理是数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值