zoukankan      html  css  js  c++  java
  • Python---Pandas模块

    Pandas模块是一个强大的数据分析和处理工具。它提供快速,灵活,富有表现力的数据结构,能为复杂情形下的数据提供坚实的基础分析功能。

     复杂情形可能有以下3种:

    1.数据库表或Excel表,包含了多列不同数据类型的数据。

    2.任意的【矩阵,二维表,观测统计数据】,允许独立的行或列带有标签。

    3.时间序列类型的数据,包括有序和无序的情形,甚至是频率不固定的情形。

     Pandas两个重要的数据结构:系列(Series)和数据框(DataFrame)

    import pandas as pd
    from bokeh.server.urls import per_app_patterns
    print "创建 DataFrame"
    data={'id':["小苏","小周","小海"],'age':[18,25,76],'address':["陕西","越南","韩国"]}
    df=pd.DataFrame(data)
    print df
    print "改变DataFram的结构"
    df2=pd.DataFrame(data,columns=['id','age','address'],index=['第一行','第二行','第三行'])
    print df2
    print "***获取一列的值***"
    print df2['address']
    print "***获取前2行的值***"
    print df2.head(2)
    print "***获取指定的行的值***"
    print df2.loc["第二行"]
    print "***获取第二行第三列的值***"
    print df2.loc["第二行","address"]
    print "***修改指定的值"
    df2.at["第一行","address"]="中国"
    print df2
    df2['big']=df2['age']>18
    print df2
    del df2['big']
    print df2
    df3=pd.read_csv("/home/soyo/桌面/spark编程测试数据/2.csv")    #返回DF
    print df3
    df4=pd.concat([df2,df3],ignore_index=True)
    print df4
    print df2
    df5=pd.DataFrame.mean(df2)
    print df5
    print df2.mean()
    data2={'id':["小苏","小周","小海","小周"],'age':[18,25,76,25],'address':["陕西","越南","韩国","越南"]}
    df10=pd.DataFrame(data2,columns=['id','age','address'])
    print df10
    print "*********删除重复的行*********"
    print df10.drop_duplicates()
    print "********统计DataFrame中的任何一个列的值出现次数**********"
    print pd.Series.value_counts(df10["age"])
    print pd.Series.value_counts(df10["address"])
    print df10["age"].value_counts()
    print "***返回DF倒数的2行***"
    print df10.tail(2)
    print "**********Pandas创建系列*************"   #系列与一维数组类似
    s=pd.Series([5,8,"soyo"],name="小度")
    print s
    s1=pd.Series({'a':64,'b':49,'c':25},name="number")
    print s1
    print "获取系列的值"
    print s1[1]
    print s1["c"]
    s1['d']=36
    print s1
    print "***系列支持向量化操作***" #向量化操作:能够同时对一个系列的所有值执行同样的操作
    import numpy as np
    print np.sqrt(s1)
    print s1*s1

    结果:

    创建 DataFrame
      address  age  id
    0      陕西   18  小苏
    1      越南   25  小周
    2      韩国   76  小海
    改变DataFram的结构
         id  age address
    第一行  小苏   18      陕西
    第二行  小周   25      越南
    第三行  小海   76      韩国
    ***获取一列的值***
    第一行    陕西
    第二行    越南
    第三行    韩国
    Name: address, dtype: object
    ***获取前2行的值***
         id  age address
    第一行  小苏   18      陕西
    第二行  小周   25      越南
    ***获取指定的行的值***
    id         小周
    age        25
    address    越南
    Name: 第二行, dtype: object
    ***获取第二行第三列的值***
    越南
    ***修改指定的值
         id  age address
    第一行  小苏   18      中国
    第二行  小周   25      越南
    第三行  小海   76      韩国
         id  age address    big
    第一行  小苏   18      中国  False
    第二行  小周   25      越南   True
    第三行  小海   76      韩国   True
         id  age address
    第一行  小苏   18      中国
    第二行  小周   25      越南
    第三行  小海   76      韩国
       id age power
    0       3 8 45 
    1      4 23 84 
    2       4 23   
    3      小华   35 
    4  soyo 88 45 1
      address   age   id  id age power
    0      中国  18.0   小苏           NaN
    1      越南  25.0   小周           NaN
    2      韩国  76.0   小海           NaN
    3     NaN   NaN  NaN       3 8 45 
    4     NaN   NaN  NaN      4 23 84 
    5     NaN   NaN  NaN       4 23   
    6     NaN   NaN  NaN      小华   35 
    7     NaN   NaN  NaN  soyo 88 45 1
         id  age address
    第一行  小苏   18      中国
    第二行  小周   25      越南
    第三行  小海   76      韩国
    age    39.666667
    dtype: float64
    age    39.666667
    dtype: float64
       id  age address
    0  小苏   18      陕西
    1  小周   25      越南
    2  小海   76      韩国
    3  小周   25      越南
    *********删除重复的行*********
       id  age address
    0  小苏   18      陕西
    1  小周   25      越南
    2  小海   76      韩国
    ********统计DataFrame中的任何一个列的值出现次数**********
    25    2
    18    1
    76    1
    Name: age, dtype: int64
    越南    2
    陕西    1
    韩国    1
    Name: address, dtype: int64
    25    2
    18    1
    76    1
    Name: age, dtype: int64
    ***返回DF倒数的2行***
       id  age address
    2  小海   76      韩国
    3  小周   25      越南
    **********Pandas创建系列*************
    0       5
    1       8
    2    soyo
    Name: 小度, dtype: object
    a    64
    b    49
    c    25
    Name: number, dtype: int64
    获取系列的值
    49
    25
    a    64
    b    49
    c    25
    d    36
    Name: number, dtype: int64
    ***系列支持向量化操作***
    a    8.0
    b    7.0
    c    5.0
    d    6.0
    Name: number, dtype: float64
    a    4096
    b    2401
    c     625
    d    1296
    Name: number, dtype: int64
  • 相关阅读:
    JAVA 基础 / 第二十三课: 类和对象 / 什么是JAVA中的方法重载? 构造方法?
    JAVA 基础 / 第二十二课: 类和对象 / 什么是JAVA中的引用? 继承 ?
    【Oracle】ORA-12518, TNS:listener could not hand off client connection
    Oracle 将当前系统时间戳插入timestamp字段 无效的月份
    Git本地有未提交文件,直接拉取远端最新版本
    Windows下分布式环境搭建以及简单测试
    Python——pip快速下载第三方库到指定环境
    Python——Scrapy爬取链家网站所有房源信息
    Python——XPath提取某个标签下所有文本
    Python——全国瓜子二手车数据分析
  • 原文地址:https://www.cnblogs.com/soyo/p/8445015.html
Copyright © 2011-2022 走看看