pandas

处理除了数值型的数据之外的其他类型数据

  • 常用数据类型

    • Series 一维数据,带标签的数组
    • DataFrame 二维数据
  • 创建Series数组

    pd.Series([1,23,2,2,1], index=list(“abcde”))

    也可以用字典转换到Series

  • 转变数值类型

    t2.astype(float)

切片和索引

  • 获取值

    可以是键,也可以是下标

    例如:t3[“age”], t3[2]

  • 取不连续的几行

    t[ [“age”,“tel”] ]

  • 布尔索引

    t[t>10]

  • 所有下标(键)

    xx.index

  • 所有值

    xx.values

读取外部数据

  • 读取csv

    df = pd.read_csv("./dogName2.csv")

    还可以读很多格式的文件

    比如html, json, sql…

对于没有对应功能的格式或者文件,例如Mnogodb,可以先存到pandas中,再用一系列(DataFrame)操作

DataFrame

二维,Series容器

  • 命名索引名称

    pd.DataFrame(np.arange(12).reshape(3,4),

    index=list(“abc”),

    columns=list(“WXYZ”))

  • 字典传入DataFrame

    • 列表里有多少数据表示DataFrane有多少行

  • 也可以用存字典的列表传入

基础属性

  • 行坐标

    t2.index

  • 列坐标

    t2.columns

  • 所有的值(存了一个个对象的数组)

    t2.values

  • 形状(几行几列)

    t2.shape

  • 每一列是什么类型

    t2.dtypes

  • 数据的维度

    t2.ndim

  • 显示头部几行

    df.head(3)

  • 显示尾部几行

    df.tail(3)

  • 一些信息,行数、列数、列索引、列类型…

    df.info()

  • 统计数字列的情况,平均值、方差…

    df.describe()

消除不想要的数据(列)

从大的数据中通过for循环获得一小部分列,存在另外一个列表中

  • 按某列的顺序排序

    df.srot_values(by=“Count_AnimalName”,

    ascending=False(降序))

  • 取行或者列

    df[:20]

    #前20行

    df[‘Row_Labels’]

    #取列索引

  • 通过标签索引行数据

    t3.loc[字符串或者字符串列表,字符串或者字符串列表]

    例如:t3.loc[‘A’,:]

    注意:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGlNBFFP-1611656236484)(04_pandas.assets/image-20210123111351787.png)]

  • 通过位置索引行数据

    t3.iloc[[0,2,[2,1]]

  • 布尔索引

    df[ df[“count”] > 800

    t3[ pd.notnull( t3[‘W’] ) ]

字符串方法

contains

len

lower, upper

replace

split

例如:

df[‘info’].str.split(’/’).tolist()

#用/切割一行行数据,然后保存到一个大列表中

缺失数据处理

  • 判断数据是否为NaN

    pd.isnull(df)

    pd.notnull(df)

  • 处理方式

    1. 删除NaN所在的行列dropna(axis=0,how=‘any’,inplace=False)

    #0删除行,all表示当前行全部为NaN才删;any表示有1个为NaN就删,inplace表示原地替换将矩阵换成之后的结果

    1. 填充数据。t2.fillna(0)

      t2.fillna(t2.mean())

      #将平均值填充到所有列的NaN中来

      只填充一列

      t2[“age”] = t2[“age”].fillna(t2[“age”].mean())

在numpy中含有NaN的列的平均值为Nan

在pandas中含有NaN的列的平均值会忽略NaN

处理为0的数据(0是否没有意义):

t[t==0] = np.nan

  • 获得全部导演(名字的列表)的数量

    len(df[“Director”].unique())

  • 获得多个电影的演员人数:

    展平放在一个列表中,再利用集合set唯一化

  • 获得最大值、最小值、、和它们的位置

例子:统计电影类型

数据合并

  • join

    默认把行索引相同的数据合并到一起

  • merge

    按照指定的列把数据按照一定的方式合并到一起

    df1.merge(df3,on=“a”,how=“inner”)

    how:

    • inner 交集

    • outer 并集,NaN补全

    • left 左边为准,NaN补全

    • right 右边为准,NaN补全

分组和聚合

分组

df.groupby(by=“columns_name(Country)”)

返回DataFrameGroupBy对象

  • 可以进行遍历

    for i.j in grouped:

    ​ print(i,j)

    按“国家”分类,每一个都为元组,前面i是“国家”,后面j是DataFrame(当前数据全部为该“国家”的DataFrame)

    元组(索引(分组的值),分组之后的DataFrame)

  • 按照多个条件进行分组

    PPT134页描述详细

前面两列一起为索引(复合索引),后面为数据,类型为Series

要想返回DataFrame类型,只需要在加一个[]方括号,例如df[[“Brand”]]

PPT135页

索引的方法和属性

  • 获取index

    grouped1.index

  • 指定index

    df1.index = [“a”,“b”]

  • 重新设置index

    df.reindex(list(“abcdef”))

    #不存在的会设置为NaN,相当于对其取行

  • 指定某一列作为index

    df1.set_index(“a”,drop=False(False为保留a列))

  • 返回index的唯一值

    df.set_index(“Country”).index.unique()

  • 可以是复合索引

例子

  • 交换(前后两个)索引的位置

    d. swaplevel()

聚合

  • 统计全部国家的公司个数

    grouped[“Brand”].count()

    可以取特定列统计(例如Brand,也可以是Country,没有NaN)

时间序列

  • 生成一段时间范围

    pd.data_range(start=None,end=None,periods=None,freq=‘D’)

  • 常见的频率的缩写

10D:表示10天

  • 时间字符串转化为时间序列(字符串转类型对象)

    df[‘timeStamp’] = pd.to_datatime(df[‘timeStamp’],format="")

    #format可以帮助格式化时间字符串(可以查阅python datetime),比如包含中文

  • 重采样

    指的是将时间序列从一个频率转化为另一个频率进行处理的过程

    • 将高频率数据转化为低频率数据为降采样
    • 低频率转化为高频率为升采样

    pandas可以用resample方法实现频率转化

    • t.resample(“M”).mean()

      #按月份取平均值

    • t.resample(“10D”).count()

      #10天计数

  • 时间段

    periods = PeriodIndex(

    year=data[‘year’],

    month=data[‘month’],

    day=data[‘day’],

    hour=data[‘hour’],

    freq=‘H’)

    #功能:把分开的时间字符串通过periodIndex方法转化为pandas的时间类型

    之后可以添加1列到数据中

    指的是将时间序列从一个频率转化为另一个频率进行处理的过程

    • 将高频率数据转化为低频率数据为降采样
    • 低频率转化为高频率为升采样

    pandas可以用resample方法实现频率转化

    • t.resample(“M”).mean()

      #按月份取平均值

    • t.resample(“10D”).count()

      #10天计数

  • 时间段

    periods = PeriodIndex(

    year=data[‘year’],

    month=data[‘month’],

    day=data[‘day’],

    hour=data[‘hour’],

    freq=‘H’)

    #功能:把分开的时间字符串通过periodIndex方法转化为pandas的时间类型

    之后可以添加1列到数据中

数据分析_04_pandas相关推荐

  1. Velodyne VLP-16激光雷达数据分析

    Velodyne VLP-16激光雷达数据分析 Velodyne VLP-16激光雷达保持了 Velodyne 在 LiDAR 中的突破性重要功能:实时收发数据.360 度全覆盖.3D 距离测量以及校 ...

  2. 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析

    目录 ​​​​​​​物联网设备数据分析 ​​​​​​​设备监控数据准备 ​​​​​​​创建Topic ​​​​​​​模拟数据 ​​​​​​​SQL风格 ​​​​​​​DSL风格 物联网设备数据分析 在 ...

  3. 2021年大数据Spark(二十八):SparkSQL案例三电影评分数据分析

    目录 案例三:电影评分数据分析 代码实现 Shuffle分区数 案例三:电影评分数据分析 使用电影评分数据进行数据分析,分别使用DSL编程和SQL编程,熟悉数据处理函数及SQL使用,业务需求说明: 对 ...

  4. Excel的数据分析—排位与百分比

    Excel的数据分析-排位与百分比 某班级期中考试进行后,按照要求仅公布成绩,但学生及家长要求知道排名.故欲公布成绩排名,学生可以通过成绩查询到自己的排名,并同时得到该成绩位于班级百分比排名(即该同学 ...

  5. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

  6. ESI计算机排名2021年01月,喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析!...

    原标题:喜忧参半!2021年5月ESI世界大学排行榜,21个学科排名数据分析! 2021年5月13日,科睿唯安发布了<2021年5月ESI中国高校排行榜>. 一.计算机科学专业 1.清华大 ...

  7. python数据分析要学什么_python数据分析学什么?python数据分析入门

    有很多没有基础的新手想学习python数据分析,却在纠结python数据分析难不难学?下面万古网校小编给大家整理了资料,为各位分享! 1.python难不难? Python可以说是目前比较主流而且易学 ...

  8. python数据分析实训大纲,数据分析大赛考纲:(二)Python数据分析应会部分

    1.1. Numpy库的使用 1.1.1. Numpy数组的创建 1. 了解Numpy中ndarray数组对象的性质和特点: 1. 掌握通过array()函数创建Numpy数组的方法,会将Python ...

  9. v-model无法对返回的数据进行填写_学会数据分析思维,学会透过事物看本质

    这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变. 举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知 ...

最新文章

  1. 从opensuse 12.3 升级到 opensuse13.1体验
  2. Exchange 2013部署系列之(十)信息权限保护RMS和Exchange 2013的整合
  3. Java的表白程序_java表白程序
  4. 压力测试+webbench+ab+tsung+siege
  5. kali如何安装netcat_Netcat常用方法汇总
  6. js怎么设置z index.html,HTML5 Canvas set z-index
  7. IPv6名称到地址的转换函数getaddrinfo()详解
  8. SQL Server2008优化之SET STATISTICS开关
  9. Pandorabox等类OpenWrt的路由器 实现后端设备接入IPV6(中继代理+NAT)
  10. 华为笔试题库及性格测试
  11. 在win10下,xilinx公司FPGA下载器上,指示灯不亮,设备管理器中驱动显示正常,下载器无法识别到期间
  12. matlab预测误差,Matlab的神经网络预测误差比较大,该怎样调整
  13. Unity实现将图片上传到服务器功能
  14. 矩阵论极简笔记(1):如何降维度打击
  15. 手游测试之《弱网测试》
  16. MySQL 5.6.21下载安装之安装篇(二)
  17. Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
  18. windows系统C盘越来越大怎么办(包括win10)
  19. 又一个!左手手机,右手汽车,为啥手机厂商都扎堆造汽车?
  20. python面向对象-2

热门文章

  1. RabbitMQ topics
  2. 升级Xcode 11.2 后报错: Multiple commands produce 的解决办法
  3. 地理信息系统的发展趋势——网格GIS
  4. Chrome浏览器保存微信公众号文章中的图片
  5. 【BUG记录】Idea spring boot项目中target中没有同步更新最新目录文件及资源
  6. h5 实现扫码二维码及条形码(js多种实现方式)
  7. 阿里云大数据工程师ACP认证例题
  8. 微信小程序报错“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.js...“
  9. 英文投稿过程中的十种状态
  10. 电脑黑屏显示重新连接服务器,电脑黑屏怎么处理(电脑上显示器黑屏的处理方法)...