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查询数据
- df.loc:根据index和查询,甚至可以写入,常用
- df.iloc:
- df.where
- 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 版权协议
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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搭建本