Pandas学习
Published on 2021-10-09 22:39 in 分类: Pandas with dutrmp19
分类: Pandas

Pandas学习

Pandas学习

视频教程

DataFrame和Series

DataFrame

df = pd.read_csv()

返回一个DataFrame对象,对象是二维表。

Series是一维的数据结构

可以手动指定names=name_list,表示columns叫啥

这个对象有很多属性

.index:RangeIndex,读入时,会默认指定行号,从0开始

.columns:列的名称

.shape:这个表长啥样,几行几列

.dtypes:每一列的数据类型

df.head():查看前数列

Series

创建一个Series:

series = pd.Series([1,'1',2], index = [1, 'b', 3])

series.index和dataframe的index一样,也是总共几个,步长多少

从DataFrame查询Series

DataFrame可以看作是有Series组成的字典,可以通过表示行的index访问,也可以通过表示列的columns访问。

如果查出来的是二维的,那么就是DataFrame,如果是一维的,就是Series。

查询一行:df.loc[index]

查询多行:df.loc[index_1:index_2]

查询一列:df[column_label]

从DataFrame查询数据

  1. df.loc:根据index和查询,甚至可以写入,常用
  2. df.iloc:
  3. df.where
  4. df.query

主要是loc[]的使用

参考:https://blog.csdn.net/weixin_45144170/article/details/106033436

loc[index/index_list/index_slice, label/label_list/label_slice]

条件表达式的查询

df.loc[expr, col_slice]

df['label'] > 0返回一个bool类型的Series,index和原dataframe一样,

可以把这个Series放到loc[]里,挑选出符合条件的行们。

从DataFrame中统计数据

全局统计

统计每个数字列,给出平均值、反差等信息。

df.describe()

统计结果还是一个dataframe。

枚举范围

查看某个列的取值范围,比如风向,爱好等

df['column`].unique`

某一列中某个值出现次数

利用Series的value_counts()方法

df['column_name'].value_count

相关系数

df.cov() # 整个表的协方差矩阵
df.corr() # 整个表的相关系数矩阵

要查看某两列的协方差或相关系数

df['column_1'].cov(df['column_2'])
df['column_1'].corr(df['column_2'])

我们在“挖掘数据”的时候,可以新建一些列,查看这些列和原有列的相关程度corr。

修改DataFrame中的数据

修改包括增删改

直接新建一个column

toys['col_a'] = toys['name'] + '_a'
temp['wencha'] = temp['high_temp'] - temp['low_temp']

根据条件新建column

可以这么理解:

一个函数,函数的参数是一个Series,返回值是str或者int。

这样,逐行遍历DataFrame中的Series,通过函数映射到一个值,写到新的column就行。

dataframe和Series都有apply方法,会把可迭代的单元代入进行判断,

比如DataFrame的迭代单元是Series,而Series的迭代单元就是单值。

def gtl_0(x) :
if x['time'] > 0:
return True
else :
return False
toys['time_gtl_0'] = toys.apply(gtl_0, axis = 1)

axis=1表示传入的Series是通过列名访问

直接通过loc条件表达式修改

df['temp_type'] = '' //
df.loc[df['high_temp']-df['low_temp'] > 10, 'temp_type'] = '温差大'

直接删除某一列

drop(col, axis=1, inplace=true)

对空的处理

  • 检测空值:isnull和notnull
  • 丢弃空值:
    • axis:按行还是按列丢弃
    • how:是存在空值则丢弃还是所有为空才丢弃
    • inplace:是直接在原df上修改还是返回一个新的df
  • 填空空值:fillna
    • value:填充的值,可以是单值,也可以是字典,key是列名,value是值
    • method:用前一非空值填充还是用后一个非空值填充
    • axis:按行还是按列填充
    • inplace:同上

检测空值

df.isnull()一个bool的dataframe
series.isnull()一个bool的series

df.isnull().sum()直接按列统计NAN个数,因为真值也是可以求和的。

notnull()的bool取反

因为其返回了一个bool类型的Series或DataFrame,所以可以用做loc中条件表达式的筛选。

筛选出toys中,name这一列中

toys.loc[toys['name'].isnull()]

删除空值

若某列中全是空值,则删除该列

toys.dropna(axis = 1, how = 'all', inplace = True)

若某行中含空值,则删除该行

toys.dropna(axis = 0, how = 'any', inplace = True)

填充空值

对于一个空值,若其在“分数”列中,则填充为0。

score.fillna({"分数":0})

对toys中price这一列,若存在空值,则用上一行的非空值来填充

toys['price'].fillna(method='ffill', inplace=True)

杂接口

df.set_index()

df默认index时是0开始,我们可以把index设置为某个column的值,然后再把这个列删掉。

参考: https://blog.csdn.net/lisnyuan/article/details/107086094

如果您有任何关于文章的建议,欢迎评论或在 GitHub 提 PR

作者:dutrmp19
本文为作者原创,转载请在 文章开头 注明出处:https://www.cnblogs.com/dutrmp19/p/15388054.html
遵循 CC 4.0 BY-SA 版权协议


posted @   dutrmp19  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示