当前位置: 首页 > news >正文

【数据挖掘】pandas使用手册

前言

        等到了我们学校的数据挖掘课程,就从最简单的pandas开始记录我的数据挖掘学习历程吧!希望这份手册能在之后需要的时候帮助到大家。


pandas使用手册

第一部分:series基础

操作参考:

创建series

取一个元素

取多个元素

赋值

Series间的计算

Series函数的使用

使用apply

练习题:

第二部分:dataframe基础 

操作参考:

创建DataFrame

查看DataFrame信息

取一个列成一个series

取多个列成一个DataFrame

条件读取

取出一行成为series

赋值

groupby操作

使用apply

生成一列series数据的便捷方法: 

练习题:

第三部分:dataframe绘图

操作参考:

条件删除行

直方图

散点图 

箱型图


series基础

操作参考:

创建series

 ser2 = Series(range(4),index = ["a","b","c","d"])

取一个元素

ser2["a"]
ser2[1]

取多个元素

>>> ser2[1:3]
>>> ser2[['a', 'c']]

赋值

>>> ser2["a"] = 7      #赋一个值
>>> ser2[1:3] = 10     #批量赋值
>>> ser2[['a', 'c']] = [9, 8]

Series间的计算

>>> print(a + b)   
>>> print(a * 2)
>>> print(a >= 3)   #产生true false的新series
>>> print(a[a >= 3])  #取出true false series的对应的值成series,相当于where条件

Series函数的使用

>>> print(a.mean()) #均值
>>> print(a.sum()) #求和

使用apply

>>> print(a.apply(lambda x:x**2))  #全部平方

练习题:

  1. 创建一个6个元素的Series, 值是[4,5,6,7,8,9], index是 ‘a’到 ‘f’
  2. 两种方法取ser的第二个元素
  3. 求ser的平均值和中位数
  4. 找到ser中所有偶数:包含判断以及取数两部分
  5. 将ser中所有偶数,改成10,12,14
  6. 将ser中所有偶数,改成2
  7. 将ser中所有偶数,翻倍
  8. 将ser应用自定义函数,当数字是奇数,翻倍;当数字是偶数,除以2

dataframe基础 

操作参考:

创建DataFrame

>>> df = pd.DataFrame([[1,2,3], [6,7,8]],columns= ["a","b","c"])
>>> df = pd.DataFrame({'country':['aaa','bbb','ccc'], 'population':[10,12,14]})
>>> df = pd.read_csv("yours.csv")

查看DataFrame信息

>>>df.info()
>>>df.index
>>>df.columns
>>>df.dtypes
>>>df.values

取一个列成一个series

>>> df["a"]
>>> df.loc[:, 'a']

取多个列成一个DataFrame

>>> df[["a","c"]]
>>> df.loc[[1,2], ['a']]  #只取两行a列

条件读取

>>> df[df['a'] > 3]
>>> df[(df['a'] > 3) & (df['b']< 8)]

取出一行成为series

>>> df.iloc[0]

赋值

>>>df['a'] = [1,2,3]  #注意行数一致  
>>>df[['a', 'c']] = 8   #若要取指定行,需要用loc或iloc
>>>df.loc[:, 'd'] = df.loc[:, 'b']    #将b列赋值到新的d列
>>>df.loc[df['b'] < 3, 'c'] =  df.loc[df['b'] < 3,'d']
 #将b<3 的d列赋值到c列 注意两边的条件要一样,才能满足索引一致的要求,否则赋值越界

groupby操作

>>> df = pd.DataFrame({'key':['A','B','C','A','B','C','A','B','C'],'data':[0,5,10,5,10,15,10,15,20]})
>>> df.groupby('key').sum()  #按key成组,每组所有列求和
>>> df.groupby('key')['data'].mean()   #按key成组,每组求均值,取data列的聚合结果series
>>> for key, gdata in df.groupby('Sex'):     #gdata是一个DataFrame
>>>print(key, gdata.values)   

使用apply

>>>def my_min(a, b):   #先定义函数
            return min(abs(a),abs(b))
>>>df1['k'] = df.apply(lambda row: my_min(row['val_1'], row['val_2']), axis=1)    #使用匿名函数传每行的特定列, 返回一个series 再赋值到k列,注意axis=1、

生成一列series数据的便捷方法: 

>>> df['val_1'] = df['value'].diff(k)     #同列逐行向上/下相减
>>> df['val_2'] = df[''value'].shift(k)   #所有行向上/下移动k位

练习题:

  1. 读取天气的数据文件weather.csv
  2. 用apply实现一列rain = rain08+rain20;若一边存在999990,则返回999990
  3. 按station补前一天日期: 按station分组,每组内部,使用shift方法将前一天的数据移动到今天
  4. 按城市补全rain08: 按city分组,将同一天内rain08中999990的值,替换成同城所有station的rain08的非999990的 均值,如果都缺失则补0;

dataframe绘图

操作参考:

条件删除行

df = df.drop( df[ ( df['value'] < 50) & ( df['value'] > 20)].index)

其中drop传入的是 df条件取出的的index

直方图

df['temperature'].plot.hist( bins = 20)

散点图 

df.plot.scatter(x = 'humidity', y = 'temperature')

箱型图

df[['temperature', 'humidity']].plot.box()

相关文章:

  • 图像处理技术的综合应用——提取篮球
  • 2021 第四届 浙江省大学生网络与信息安全竞赛技能赛 预赛 Writeup,4题
  • 【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系
  • 【零基础学QT】第七章 网络通信,TCP、UDP通信实验
  • 一次解释器模式的实际使用
  • C++入门·收尾
  • 25.CF992E Nastya and King-Shamans 转化+线段树二分
  • 快来带您了解中秋节的前世今生
  • 分布式锁之防止超卖 --mysql原子操作,乐观锁,redis事务,乐观锁
  • 【算法刷题】第一篇——哈希
  • 小脚本杂文shell脚本
  • 网络热的查询易语言代码
  • 医美健康这类在医疗行业的推广要怎么做?
  • uni-app开发,防止踩坑
  • mac M1 安装AndroidStudio打开真机调试
  • Google 是如何开发 Web 框架的
  • 5、React组件事件详解
  • Brief introduction of how to 'Call, Apply and Bind'
  • flask接收请求并推入栈
  • HomeBrew常规使用教程
  • Java多态
  • Java小白进阶笔记(3)-初级面向对象
  • Linux CTF 逆向入门
  • node-glob通配符
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • text-decoration与color属性
  • Vue学习第二天
  • 前端相关框架总和
  • 算法---两个栈实现一个队列
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Hibernate主键生成策略及选择
  • ​渐进式Web应用PWA的未来
  • ${ }的特别功能
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (23)Linux的软硬连接
  • (C语言)fgets与fputs函数详解
  • (Matlab)使用竞争神经网络实现数据聚类
  • (zhuan) 一些RL的文献(及笔记)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (五)MySQL的备份及恢复
  • .libPaths()设置包加载目录
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net8 Blazor 尝鲜
  • .NET微信公众号开发-2.0创建自定义菜单
  • .Net中的集合
  • @Bean, @Component, @Configuration简析
  • [1525]字符统计2 (哈希)SDUT
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Android 13]Input系列--获取触摸窗口