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
  • 相关阅读:
    Notification的使用
    Spring面向切面之AOP深入探讨
    使用注解配置Spring框架自动代理通知
    回顾Spring框架
    Spring利器之包扫描器
    Spring 核心概念以及入门教程
    Struts 2之动态方法调用,不会的赶紧来
    Struts2之过滤器和拦截器的区别
    Struts 2开讲了!!!
    Mybatis开篇以及配置教程
  • 原文地址:https://www.cnblogs.com/soyo/p/8445015.html
Copyright © 2011-2022 走看看