zoukankan      html  css  js  c++  java
  • B站14天数据分析笔记3次课Pandas

    #Pandas/Python Data Analysis Library
    #导入
    import pandas as pd
    import numpy as np
    
    #基本数据结构
    
    #一维数组 Series 类似array/list 与array差别: 能保存不同类型的数据 左闭右闭的区间
    a=pd.Series([1,2,3,np.nan],index=['a','b','c','d']) #自定义索引类型
    a
    #查看索引
    a.index #  输出Index(['a', 'b', 'c', 'd'], dtype='object')
    #查看值
    a.values # array([ 1.,  2.,  3., nan])
    a[3]
    #切片
    a[::2]
    #索引列命名
    a=pd.Series([1,2,3,np.nan])
    a.index.name='索引'
    #后续索引赋值
    a.index=list('abcd') #索引与数据项的个数一致 
    #左闭右闭
    a['a':'c']
    #-------------------------------------------
    #二维 dataframe数据表
    date=pd.date_range('20180101',periods=6)
    #索引行index 索引列columns
    df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('abcd'))
    df.index.name='日期'
    df
    #字典传入数据 key作为索引
    df2=pd.DataFrame({'A':1,'B':pd.Timestamp('20181001'),'C':pd.Series(1,index=list(range(4)),dtype=float),'D':np.array([3]*4,dtype=int),'E':pd.Categorical(["test","train","test","train"]),'F':'abcd'})
    df2
    
    #查看遍历数据
    #行查看
    df2.head()#默认为5
    df2.tail(3)#最后3行#默认为5
    #下标 列标 数据
    df.index
    df.columns
    df.values
    
    #数据读取与操作
    df=pd.read_excel('豆瓣电影数据.xlsx')
    df.head()
    
    #行操作
    df.iloc[0]
    df.iloc[0:5]#左闭右开
    df.loc[0:5]#左闭右闭
    
    
    dit={'名字':'复仇者联盟3','投片人数':123456,'类型':'剧情/科幻','产地':'美国','上映时间':'2018-05-4 00:00:00','时长':142,'年代':2018,'评分':9.9}
    s=pd.Series(dit)
    s.name=38738
    s
    df=df.append(s) #传入一行属性一定要对齐
    df=df.drop([38738])#选定某行的index值
    df[-5:]
    
    #列操作
    df.columns
    df[['名字','类型']][:5] #list的对象
    
    #增加列
    df['序号']=range(1,len(df)+1) #range(a,b) 左闭右开
    df[:5]
    
    #删除列
    df=df.drop('序号',axis=1) #维度/轴 行默认为0 列为1
    df[:5]
    #--------------------------------------
    #通过标签选择数据 df.loc[[index],[column]]
    df.loc[1,'名字'] #[行,列]
    df.loc[[1,3,5,7,9],['名字','评分']]
    
    #条件选择
    df[df['产地']=='美国'][:5] #产地为美国的电影
    
    df[(df['产地']=='美国')&(df['评分']>9)] #产地为美国且评分大于9
    df[(df.产地=='美国')&(df.评分>9)][:5]
    
    df[((df.产地=='美国')|(df.产地=='中国大陆'))&(df.评分>9)]
    
    #缺失值 异常值处理 数据清洗
    
    #缺失值 删 填 判断
    df[df['名字'].notnull()]
    
    #填充
    df[df['投片人数'].isnull()][:10]
    df['投片人数'].fillna(np.mean(df['投票人数']),inplace=True)
    df[df['投片人数'].isnull()]
    
    #删除
    # df.dropna() 
    #how='all' 删除全为空值的行或列
    #inplace=True 覆盖
    #axis=0 选择行或列
    print(len(df))
    df2=df.dropna()
    print(len(df2))
    df3=df
    df3.dropna(inplace=True)
    print(len(df3))
    
    #处理异常值/离群点 删除/格式转换
    df=df[df.投票人数<0]
    df=df[df.投票人数%1!=0]
    
    #数据保存
    df.to_excel('movie_data.xlsx')
    
    
    
    

    运行截图请添加图片描述

  • 相关阅读:
    Lotus Notes/Domino发生故障时常用的数据收集步骤
    0207.Domino R8.0.x群集配置手册
    兼容IE、FF的将当前页加入收藏夹和设为首页的js代码
    常用函数
    jsonp详解
    开启curl
    Javascript在页面加载时的执行顺序
    linux系统利用u盘装xp
    Table '.\about_cj\newabout' is marked as crashed and should be repaired
    iframe跨域问题
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495361.html
Copyright © 2011-2022 走看看