• 机构投资者应合理审慎报价 2019-07-16
  • “2018上影之夜”姜文等为“谢晋经典电影回顾展”揭幕 2019-07-10
  • 交大钱学森学院举行毕业典礼 14毕业生赴世界排名前百大学读研 2019-07-10
  • 西安市:构建“五方联动”社会治理新格局 2019-06-23
  • IP定向--云南频道--人民网 2019-06-23
  • 育儿十大坎 新手妈妈快快get起来 2019-06-21
  • 吉林:让更多农村孩子参加少年宫活动 2019-06-21
  • 美国发起贸易战,我们要让世界知道美元、美债并不可靠 2019-06-05
  • 紫光阁中共中央国家机关工作委员会 2019-05-31
  • 监察体制改革后 湘西半年72名公职人员主动交代问题 2019-05-12
  • 媒体宣传报道重庆日报 王国平:扮靓重庆两江四岸” 让城市有机更新 2019-04-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2019-04-16
  • 14名消防员日巡逻28公里 洗冷水澡 2019-04-10
  • 靶壕有了“蓝军”,百发百中的“神枪手”练起来 2019-04-10
  • 不是秀强大了,别人就会来做朋友,这逻辑不对 2019-04-01
  • 频道栏目
    神奇公式秒杀全国11选5 > 程序开发 > Web开发 > Python > 正文
    python数据分析之pandas实例解析
    2018-07-27 14:40:33         来源:SunChao3555的博客  
    收藏   我要投稿

    神奇公式秒杀全国11选5 www.2zfa.com python数据分析之pandas实例解析

    #coding:utf-8
    import scrapy
    import xlwt, lxml
    import re, json
    import matplotlib.pyplot as plt
    import numpy as np
    import pylab
    from scipy import linalg
    from pandas import DataFrame,Series,MultiIndex
    import pandas as pd
    '''
    基本功能 函数应用和映射
     numpy的ufuncs(元素级数组方法)
     DataFrame的apply方法
     对象的applymap方法(因为Series有一个应用于元素级的map方法)
    '''
    
    '''
    #函数
    df=DataFrame(np.random.randn(4,3),columns=list('bde'),index=['Utah', 'Ohio', 'Texas', 'Oregon'])
    print(df)
    print(np.abs(df))#求绝对值
    
    #lambda【匿名函数】以及应用
    f=lambda x:x.max()-x.min()
    # def f(x):
    #  return Series([x.min(),x.max()],index=['min','max'])
    print(df.apply(f))#执行函数f[列(axis=0) 最大值-最小值]
    print(df.apply(f,axis=1))#按照轴1执行
    
    #applymap 和 map
    _format=lambda x:'%.2f'%x
    print(df.applymap(_format))#格式化每一个元素
    print(df.e.map(_format))#格式化指定索引或列(相当于Series)中的元素
    
    #排序和排位
    
    #根据索引排序,对于DataFrame可以指定轴
    obj=Series(range(4),index=['d', 'a', 'b', 'c'])
    print(obj.sort_index())
    
    df1=DataFrame(np.arange(8).reshape(2,4),index=['three','one'],columns=list('dabc'))
    print(df1.sort_index())
    print(df1.sort_index(axis=1,ascending=False))#按列降序
    
    #根据值排序
    obj1=Series([4,7,-3,2])
    print(obj.sort_values())
    #DataFrame指定列排序
    df2= DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]})
    print(df2)
    print(df2.sort_values(by='b'))
    print(df2.sort_values(by=['a','b']))
    
    
    #rank,求排名的平均位置(从1开始)
    obj2 = Series([7, -5, 7, 4, 2, 0, 4])
    print(obj2.rank(method='first'))#去第一次出现,不求平均值。
    print(obj2.rank())#默认method='average'
    print(obj2.rank(ascending=False,method='max'))#逆序,并取最大值。所以-5的rank是7
    df3=DataFrame({'b':[4.3, 7, -3, 2],
    'a':[0, 1, 0, 1],
    'c':[-2, 5, 8, -2.5]})
    print(df3.rank(axis=1))#按列排位
    
    '''
    
    #基本功能 重复索引
     #对于重复索引,返回Series,对应单个值的索引则返回标量
    '''
    obj = Series(range(5), index = ['a', 'a', 'b', 'b', 'c'])
    print (obj.index.is_unique) # 判断是非有重复索引
    print ( obj.a[:1])#若有重复索引则通过将该索引切片取值
    df = DataFrame(np.random.randn(4, 3), index = ['a', 'a', 'b', 'b'])
    print (df)
    # # print (df.ix['b'].ix[0])
    print (df.ix['b'].ix[0])
    print (df.ix['b'].ix[1])
    '''
    #汇总和计算描述统计
     # 常用方法选项
    '''
    axis 指定轴,DataFrame行用0,列用1
     skipna 排除缺失值,默认值为True
     level 如果轴是层次化索引(即MultiIndex),则根据level选取分组
     count 非NA值的数量
     describe 汇总
     min,max
     argmin,argmax 计算能够获取到最小值和最大值的索引位置(整数)
     idxmin,idxmax 计算能够获取到最小值和最大值的索引值
     sum,mean,median,mad 总和,均值,中位数,平均绝对离差
     var,std,skew,kurt,cumsum,cummin,cummax,cumprod 样本值的方差、标准差、偏度(三阶矩)、偏度(四阶矩)、累计和、累计最大值、累计最小值、累计积
     diff 计算一阶差分
     pct_change 计算百分数变化
     
     NA值被自动排查,除非通过skipna选项
     
     
    '''
    
    
    #DataFrame csv文件读写以及pandas_datareader 的使用
    import pandas_datareader.data as web
    from pandas import Panel
    import datetime
    start=datetime.datetime(2017,7,25)
    end=datetime.date.today()
    # all_data={}
    # #DataReader(name,data_source,start,end)
    # # for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']:
    # all_data['AAPL'] = web.DataReader('AAPL','iex',start,end)
    # pdata=Panel(all_data)
    # print(pdata)
    # price = DataFrame({tic: data['close'] for tic, data in all_data.items()})#将从all_data中将股票名为tic 的data['close']按日期索引取出并转化成DataFrame结构
    # volume = DataFrame({tic: data['volume'] for tic, data in all_data.items()})#******************
    #  # print('**********************')
    #  # print(price)
    # price.to_csv('close.csv')
    # returns = price.pct_change()
    # print(returns.tail())
    # print(returns.MSFT.corr(returns.IBM))
    # print(returns.corr())
    # print(returns.cov())
    # print(returns.corrwith(returns.IBM))
    # print(returns.corrwith(returns.volume))
    # appl=web.DataReader('AAPL','iex',start,end)
    # print(appl)
    #
    # data=all_data['AAPL']
    
    # df=DataFrame({'open':data.open,'high':data.high,'low':data.low,'close':data.close,
    #'volume':data.volume})
    # print(df.index)
    # print(df)
    # df.to_csv('apple.csv')
    name=['date','open','high','low','close','volume']
    raw=pd.read_csv('apple.csv')
    
    df2=raw.set_index(raw.date)
    df3=df2.reindex(['open','high','low','close','volume'],axis=1,)
    print(df3)
    
    # print(raw.open-raw.close)
    # print(raw)
    
    # new_index=raw.ix['date',:]
    # raw.set_axis(new_index,axis=1,inplace=True)
    
    # print(s1-s2)
    
    
    
    # print(df.index)
    
    
    '''
    如果报以下错误:
    #from pandas.core.common import is_list_like
    # ImportError: cannot import name 'is_list_like'
    修改(点击Run信息框中的文件地址链接亦可)...set_packages/pandas_datareader/fred.py文件中的from pandas.core.common import 
    is_like_list 
    为from pandas.api.types import is_like_list【通常在文件第一行】
    另外,data_source='yahoo' 会ImmediateDeprecationError,
    data_source='google' 因谷歌在中国不可用也会报错
    具体可看.../set_packages/pandas_datareader/data.py中的相关描述
    '''
    
    '''
    #唯一值以及成员资格
    #is_in计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组
    # unique 计算Series中的唯一值数组,按发现的顺序返回
    #value_counts 返回一个Serie,其索引为唯一值,其值为频率,按计数值降序排列
    #去重
    obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
    print (obj.unique())
    print (obj.value_counts())
    
    
    #判断元素存在
    mask = obj.isin(['b', 'c'])
    print (mask)
    print (obj[mask]) #只打印元素b和c
    data = DataFrame({'Qu1':[1, 3, 4, 3, 4],
    'Qu2':[2, 3, 1, 2, 3],
    'Qu3':[1, 5, 2, 4, 4]})
    print (data)
    print (data.apply(pd.value_counts).fillna(0))
    print (data.apply(pd.value_counts, axis = 1).fillna(0))
    '''
    
    '''
    处理缺失数据
     NA处理方法
      dropna 根据各标签的值中是否存在缺少数据对轴
      fillba 样本值的标准差
      isnull 样本值的偏度(三阶矩)
      notnull
     NaN(Not a Number)表示浮点数和非浮点数组中的缺失数据
     None也被当作NA处理
     
    '''
    
    '''
    string_data = Series(['aardvark', 'artichoke', np.nan, 'avocado'])
    print(string_data.isnull())
    string_data[0]=None
    print(string_data.isnull())
    
    print(string_data.dropna())
    
    #'DataFrame对丢弃NA的处理'
    from numpy import nan as NA
    
    data = DataFrame([[1., 6.5, 3.], [1., NA, NA],
    [NA, NA, NA], [NA, 6.5, 3.]])
    print (data.dropna()) # 默认只要某行有NA就全部删除
    print (data.dropna(how = 'all'))  # 某行全部为NA才删除
    data[4] = NA  # 新增一列
    print (data.dropna(axis = 1, how = 'all'))#某列全部为NA才删除
    data = DataFrame(np.random.randn(7, 3))
    data.ix[:4, 1] = NA#第0-4行的 1 列为NA
    data.ix[:2, 2] = NA
    print (data)
    print (data.dropna(thresh = 2)) # 行大于等于2个非NA元素会被删除
    #how参数控制行为,axis参数选择轴,thresh参数控制留下的数量
    
    #填充缺失数据
    # fillna
    # inplace参数控制返回新对象还是就地更改
    df = DataFrame(np.random.randn(7, 3))
    df.ix[:4, 1] = NA
    df.ix[:2, 2] = NA
    # print (df.fillna(0))
    # df.fillna(0, inplace = True)
    #'不同行列填充不同的值'
    print(df.fillna({1:0.5,3:-1}))#指定某列填充某值,列不存在则该列不填充
    
    #指定不同的填充方式method参数,limit参数
    # 还可用统计数据填充
    '''
    
    '''
    层次化索引
     使你能在一个轴上拥有多个(两个以上)索引级别。抽象地说,它使你能以低纬度形式处理高维度数据
     通过stack与unstack变换DataFrame
    '''
    
    '''
    #Series 的层次索引
    data = Series(np.random.randn(10),
      index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'],[1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
    print(data)
    print(data.index)
    print(data.b)
    print(data['b':'c'])
    print(data.unstack())#转化成DataFrame结构
    print(data.unstack().stack())#转化成Series结构,将变成多级索引
    
    #DataFrame的层次索引
    df = DataFrame(np.arange(12).reshape((4, 3)),
    index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
    columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])
    
    print(df)
    df.index.names=['key1','key2']
    df.columns.names=['states','color']
    print(df)
    print(df.ix['a',1])#取索引a对应第一行
    print(df.ix['a','Ohio'])#取索引a对应Ohio列
    print(df.ix['a',2]['Colorado'])#取索引a对应第二行Colorado列的元素
    print(df.ix['a',2]['Ohio']['Red'])#取索引a对应第二行Ohio列索引对应Red列的元素
    
    #直接用MultiIndex创建层次索引结构
    print (MultiIndex.from_arrays([['Ohio', 'Ohio', 'Colorado'], ['Gree', 'Red', 'Green']],
      names = ['state', 'color']))
    
    #重新分级顺序
    frame = DataFrame(np.arange(12).reshape((4, 3)),
    index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
    columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])
    frame.index.names = ['key1', 'key2']
    frame_swapped = frame.swaplevel('key1', 'key2')
    print (frame_swapped)
    print (frame_swapped.swaplevel(0, 1))#层级转换此代码意为将一级索引转换为二级索引
    
    
    #'根据索引排序'
    print (frame.sort_index(level='key2'))
    print (frame.swaplevel(0, 1).sort_index(level=0))
    
    #根据级别汇总统计
    print(frame.sum(level='key2'))
    
    #使用列生成层次索引
    df6=DataFrame({'a':range(7),
    'b':range(7,0,-1),
    'c':['one','one','one','two','two','two','two'],
    'd':[0,1,2,0,1,2,3],
    })
    print(df6)
    print(df6.set_index(['c','d']))#将c,d作为行索引(二级索引)
    print(df6.set_index(['c','d'],drop=False))#列依然保留
    df7=df6.set_index(['c','d'])
    print(df7.reset_index())#索引重置
    
    #避免索引产生歧义使用整数索引(按序).iloc[row,col]
    
    '''
    
    '''
    #面板(Pannel)数据
     通过三维ndarray创建pannel对象
     通过ix[]选取需要的数据
     访问顺序:item->major->minor
     通过stack展现面板数据
     
      
    '''

     

    点击复制链接 与好友分享!回本站首页
    上一篇:利用Python实现权限设置的详细教程
    下一篇:最后一页
    相关文章
    图文推荐
    点击排行

    关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 神奇公式秒杀全国11选5

    版权所有: 神奇公式秒杀全国11选5--致力于做实用的IT技术学习网站

  • 机构投资者应合理审慎报价 2019-07-16
  • “2018上影之夜”姜文等为“谢晋经典电影回顾展”揭幕 2019-07-10
  • 交大钱学森学院举行毕业典礼 14毕业生赴世界排名前百大学读研 2019-07-10
  • 西安市:构建“五方联动”社会治理新格局 2019-06-23
  • IP定向--云南频道--人民网 2019-06-23
  • 育儿十大坎 新手妈妈快快get起来 2019-06-21
  • 吉林:让更多农村孩子参加少年宫活动 2019-06-21
  • 美国发起贸易战,我们要让世界知道美元、美债并不可靠 2019-06-05
  • 紫光阁中共中央国家机关工作委员会 2019-05-31
  • 监察体制改革后 湘西半年72名公职人员主动交代问题 2019-05-12
  • 媒体宣传报道重庆日报 王国平:扮靓重庆两江四岸” 让城市有机更新 2019-04-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2019-04-16
  • 14名消防员日巡逻28公里 洗冷水澡 2019-04-10
  • 靶壕有了“蓝军”,百发百中的“神枪手”练起来 2019-04-10
  • 不是秀强大了,别人就会来做朋友,这逻辑不对 2019-04-01
  • 最准的合数单双中特公式 pk10牛牛稳办法 内蒙古快3预测推荐正文 微信群买广东11选5 包四肖中特平网站 湖北30选5几点开奖结果查询 3d和尾走势图1000 67期天线宝宝平特一肖 双色球彩票官网 二八杠公式理论 一码中特特码 重庆幸运农场历史开奖结果查询 腾讯彩票怎么查看 天津时时彩手机版下载 3d和值跨度图表走势