感想

一、窗口对象

pandas 中有 3 类窗口,分别是滑动窗口 rolling 、扩张窗口 expanding 以及指数加权窗口 ewm。
1、rolling():移动窗口,常用参数window

ab= pd.Series([1,2,3,4,5,6,7,8,9,10])
ab.rolling(window=2).sum()
返回结果:

很容易发现,window参数就相当于一个移动切片,从第window个数据开始往前截取window个数据。

     小练习:rolling 对象的默认窗口方向都是向前的,某些情况下用户需要向后的窗口,例如对 1,2,3 设定向后窗口为 2 的 sum 操作,结果为 3,5,NaN,此时应该如何实现向后的滑窗操作?

答案:

c= pd.Series([1,2,3])
c.rolling(window=2).sum().shift(-1)

2、 expanding():累计窗口,可实现cumsum、cummax、cummin。下面就一个一个的演示。
①、cumsum

ab= pd.Series([2,4,6,8,10])
ab.expanding().sum()
结果:2 6 12 20 30

②、cummax

ab= pd.Series([5,4,3,8,10])
ab.expanding().max()
结果:5 5 5 8 10

③、cummin

ab= pd.Series([5,4,3,8,10])
ab.expanding().min()
结果:5 4 3 3 3

二、数据读取

1、文件读取
python支持读取多种格式文件,如XLSX、JSON、CSV、TXT、HTML、JPEG、ZIP等。更多了解,可查阅https://blog.csdn.net/kevinelstri/article/details/61921812
注意:文件路径格式为文件路径+文件名+文件后缀格式,如:r’E:\Data analysis\pandaslearning\joyful-pandas-master\data\my_excel_saved.xlsx’或’E:\Data analysis\pandaslearning\joyful-pandas-master\data\my_excel_saved.xlsx’
①、XLSX文件读取
一般格式:pd.read_excel(io,sheet_name=0,header=0,index_col=None,parse_cols=None,usecols=None,nrows=None,parse_dates=False,date_parser=None,encoding=None)
常修改的参数有:io、encoding、parse_dates;其他参数均采用默认

参数 说明
io 文件路径
sheet_name 工作簿中第几个表,默认为0,即第一个表
header 列名取至Excel 中第几行,默认为0
index_col 用Excel 中第几列作为index,默认为None
parse_cols 重新设置列名,默认为None
usecols 读取哪些列数据,默认为None,即全部列
nrows 读取哪些行数据,默认为None,即全部行
parse_dates 需要转化为时间的列,默认为False;pandas中的时间数据是时间戳,有时从Excel表中读取的时间数据会是数字,此时需要做处理,处理方法是apply(lambda x:datetime.datetime.strptime(‘1899-12-30’,’%Y-%m-%d’)+dt.timedelta(days=x))
date_parser 对时间列重新指定格式,默认为None
encoding 文件编码格式,默认为None,即utf-8;当文件中含有汉字,需要修改为 GBK,否则文件读取结果的汉字会是乱码

②、CSV和TXT文件读取
CSV和TXT文件都是文本文件,都是使用pd.read_csv()方法读取数据。
一般格式:pd.read_csv(filepath_or_buffer,sep=’,’,names=None,index_col=None,usecols=None,nrows=None,parse_dates=False,date_parser=None,encoding=None)
常修改的参数有:filepath_or_buffer、encoding、names、sep、parse_dates;其他参数均采用默认

参数 说明
filepath_or_buffer 文件路径
sep 分隔符,默认为’,’;即每列分隔符号,CSV文件默认是’,’;若读取TXT文件需先查看分隔符号
names 定义列名,默认为None,即第一行作为列名
index_col 用文件中第几列作为index,默认为None
usecols 读取哪些列数据,默认为None,即全部列
nrows 读取哪些行数据,默认为None,即全部行
parse_dates 需要转化为时间的列,默认为False;pandas中的时间数据是时间戳,有时从文件中读取的时间数据会是数字,此时需要做处理,处理方法是apply(lambda x:datetime.datetime.strptime(‘1899-12-30’,’%Y-%m-%d’)+dt.timedelta(days=x))
date_parser 对时间列重新指定格式,默认为None
encoding 文件编码格式,默认为utf-8;当文件中含有汉字,需要修改文件的编码格式为utf-8,否则文件读取结果的汉字会是乱码

2、文件写入
文件写入本地电脑的格式较简单,可参照如下格式:

result.to_csv('E:\\Data analysis\\pandaslearning\\joyful-pandas-master\\data\\新文本数据.txt',encoding='utf-8',index=False)
result.to_csv('E:\\Data analysis\\pandaslearning\\joyful-pandas-master\\data\\新CSV数据.txt',encoding='utf-8',index=False)
result.to_excel('E:\\Data analysis\\pandaslearning\\joyful-pandas-master\\data\\新Excel文件.xlsx',encoding='GBK',index=False)

3、数据库数据读取
若要从数据库中读取数据,如何操作呢?

读取mysql数据可以参考https://blog.csdn.net/wcg541/article/details/100749975

import cx_Oracle
orl= cx_Oracle.connect(数据库用户名, 数据库用户密码, 数据库名称, encoding='UTF-8')
orl_cur= orl.cursor()

三、小练习:

口袋妖怪数据集
现有一份口袋妖怪的数据集,下面进行一些背景说明:

  • # 代表全国图鉴编号,不同行存在相同数字则表示为该妖怪的不同状态

  • 妖怪具有单属性和双属性两种,对于单属性的妖怪, Type 2 为缺失值

  • Total, HP, Attack, Defense, Sp. Atk, Sp. Def, Speed 分别代表种族值、体力、物攻、防御、特攻、特防、速度,其中种族值为后6项之和

题目:

1、对 HP, Attack, Defense, Sp. Atk, Sp. Def, Speed 进行加总,验证是否为 Total 值。

# 读取数据
df=pd.read_csv('E:\\Data analysis\\pandaslearning\\joyful-pandas-master\\data\\pokemon.csv')
df.head()#1、对 HP, Attack, Defense, Sp. Atk, Sp. Def, Speed 进行加总,验证是否为 Total 值。
# 方法一:
df['Total_1']=df[['HP', 'Attack', 'Defense','Sp. Atk', 'Sp. Def', 'Speed']].sum(axis=1)
df['is_total']=df['Total']-df['Total_1']
(~df['is_total']==0).sum() # 若结果不等于0,则存在Total数据异常现象#方法二:一步到位
(df[['HP', 'Attack', 'Defense','Sp. Atk', 'Sp. Def', 'Speed']].sum(axis=1)!=df['Total']).sum()

2、对于 # 重复的妖怪只保留第一条记录,解决以下问题:

a.求第一属性的种类数量和前三多数量对应的种类b.求第一属性和第二属性的组合种类c.求尚未出现过的属性组合
# 2、对于 # 重复的妖怪只保留第一条记录,解决以下问题:
#a.求第一属性的种类数量和前三多数量对应的种类
type1 = df.drop_duplicates('#', keep='first')
type1['Type 1'].nunique() # 获得第一属性的种类数量
type1['Type 1'].value_counts()[:3].index # 获得第一属性的种类数量
#或者
type1['Type 1'].value_counts().index[:3]
#b.求第一属性和第二属性的组合种类
type1_2=df[[ 'Type 1','Type 2']].drop_duplicates()#c.求尚未出现过的属性组合
type_f=[i+' '+j for i in df['Type 1'].unique().tolist() for j in (df['Type 1'].unique().tolist() + [''])]
type_p=[i+' '+j for i, j in zip(df['Type 1'], df['Type 2'].replace(np.nan, ''))]
result=set(type_f).difference(set(type_p))

3、按照下述要求,构造 Series :

a.取出物攻,超过120的替换为 high ,不足50的替换为 low ,否则设为 midb.取出第一属性,分别用 replace 和 apply 替换所有字母为大写c.求每个妖怪六项能力的离差,即所有能力中偏离中位数最大的值,添加到 df 并从大到小排序
#3、按照下述要求,构造 Series :
#a.取出物攻,超过120的替换为 high ,不足50的替换为 low ,否则设为 mid
type1['Attack'].apply(lambda x:'high' if x>=120 else 'mid' if x>=50 else 'low')# b.取出第一属性,分别用 replace 和 apply 替换所有字母为大写
# 方法一:
df['Type 1'].replace({x:str.upper(x) for x in df['Type 1'].unique()})
#方法二:简单粗暴
type1['Type 1'].apply(lambda x:str.upper(x))# c.求每个妖怪六项能力的离差,即所有能力中偏离中位数最大的值,添加到 df 并从大到小排序
df['Deviation'] = df[['HP', 'Attack', 'Defense', 'Sp. Atk','Sp. Def', 'Speed']].apply(lambda x:np.max((x-x.median()).abs()), 1)
df.sort_values('Deviation', ascending=False)

其他参考文件:

pandas基础知识https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch2.html#id1

pandas学习之pandas基础相关推荐

  1. pandas学习task02 pandas基础

    一.文件的读取和写入 1. 文件读取 import numpy as np import pandas as pd df_csv = pd.read_csv(r"C:\Users\zhouk ...

  2. python数据分析-pandas学习

    文章目录 一.pandas环境的搭建 1.pandas 简介 2.pandas安装和调用 二.pandas学习 1.pandas简介 2.pandas学习资源 3.pandas核心数据结构 4.Ser ...

  3. [Pandas 学习笔记] - No.1 pandas学习笔记

    pandas学习笔记 pandas是基于numpy开发出的数据分析包,用于高效地操作大型数据集.pandas的数据结构有三种 分别为 series,dataframe和panel,对应一维,二维,三维 ...

  4. Pandas学习总结

    文章目录 Pandas学习总结 一.pandas数据结构介绍 Series (1)Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成 ...

  5. pandas dataframe创建_Python数据分析基础之Pandas学习 (上)

    全文共 20592 字,63 幅图,预计阅读时间 52 分钟.[注:本帖小节 2.2 用万矿里的 WindPy 来下载金融数据]0引言 本文是 Python 系列的第六篇 Python 入门篇 (上) ...

  6. Pandas学习(3)——Pandas基础

    本文基于Datawhale提供的Pandas学习资料. 均为本人理解,如有不足或错误地方欢迎补充批评指正,如有侵权,联系速删. 开始学习前,请确认已经安装了 xlrd, xlwt, openpyxl ...

  7. Pandas学习-基础

    Pandas学习-基础 文章目录 **Pandas学习-基础** 1.Pandas介绍 2.Pandas安装 3.Pandas基础数据结构 3.1.pandas数据结构介绍 Series介绍 **Se ...

  8. 【python教程入门学习】Pandas是什么

    Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析"三剑客之一"的盛名(NumPy.Matplotlib. ...

  9. python中 s是什么意思_什么是Pandas?Pandas学习什么?

    pandas数据分析核心工具包,基于numpy构建,为数据分析而存在!具有以下特点: 1.一位数组Series+二维数组Dataframe 2.可直接读取数据做处理 3.兼容各种数据库 4.支持各种分 ...

最新文章

  1. 如何每天自动备份 SourceSafe (转)
  2. CF919D Substring (dag dp)
  3. C# 创建网站 无法启动与停止的问题
  4. XGBoost类库使用小结
  5. 安卓学习第9课——计时器chronometer
  6. 内容分发网络CDN(互联网技术)
  7. 探讨SQL Server 2005的评价函数
  8. java做一个万年历和闹钟,c51实现万年历、温度与闹钟功能程序
  9. 高德sdk定位当前位置_高德地图定位,获取当前位置坐标
  10. 一步一步定制自己的google map(各个省市的经纬度查询)
  11. 单片机c语言内部ram移动,2012年微型计算机原理与接口技术自考题模拟(9)
  12. 怎么用计算机拨号手机,手机怎么连接电脑拨号打电话
  13. qt html表格自动增加行,QT中的tablewidget如何插入一行数据
  14. 自然科学 计算机,自然科学计算器:Natural Scientific Calculator
  15. 电脑录屏快捷键是什么?电脑录屏是什么键
  16. Hyper-V安装Server 2019虚拟机
  17. JQuery ----Reset()方法
  18. Redis配置文件详解
  19. 东莞市中考计算机考试试题,东莞市数学中考真题(共7份word版,含答案).doc
  20. 5个借势小技巧,教你打造中秋爆款营销活动

热门文章

  1. .net 前台调用后台方法
  2. 花前挥手别伊人,月下纵马扬轻尘,红尘游历,荡剑江湖。四方辗转,看千山飞鸟逐;万里飘蓬,叹海角天涯路。夜风萧瑟雨凄楚,相思情入梦,孤影独对窗前烛,离别意难书。何时平尽心中愿,从此相守不离疏,岁岁年年情深
  3. 解决zeal文档下载不上的办法
  4. 登录功能实现账号锁定
  5. 华为云灾备解决方案,助力企业高效构建安全合规云灾备系统
  6. Day11-面向对象(4)
  7. 【LabVIEW懒人系列教程-小白入门】1.20LabVIEW之引用与属性节点
  8. SGU 507 Treediff (dsu on tree)
  9. onPullDownRefresh和uni.startPullDownRefresh(OBJECT)、uni.stopPullDownRefresh()的关系
  10. 上海宝付房价上涨?这几类人倒霉了