zoukankan      html  css  js  c++  java
  • python数据分析(三)

    数据分析处理库(Pandas)

    pandas是数据处理及分析的,底层计算由Numpy来完成,将复杂的操作封装起来,使其用起来十分高效、简洁。
    import pandas as pd
    数据预处理
    df = pd.read_csv('../data/Titanic-dataset-master/df.csv')
    df.head ()
    df.tail()
    df.info()
    df是Pandas工具包中最常见的基础结构
    df.index //索引
    df.columns //列名
    df.values //值
    df.dtypes //列结构
    df=df.set_index('Name')
    df.head()
    age=df['Age']
    age['Braund, Mr. Owen Harris']
    df[['Age','Fare']][:5]
    //iloc():用位置找数据
    df.iloc[0]
    df.iloc[0:5]
    df.iloc[0:5,1:3]
    //loc():用标签找数据
    df.loc['Braund, Mr. Owen Harris'] //取某一人数据
    df.loc['Braund, Mr. Owen Harris','Fare'] //某一人某个指标数据
    df.loc['Braund, Mr. Owen Harris':'Owen Harris',:] //某批数据
    df.loc['Braund, Mr. Owen Harris','Fare'] = 100 //修改某个数据
    //bool类型作为索引
    df[df['Fare'] > 40][:5] //Fare列大于40的行筛选出来
    df.loc[df['Sex'] == 'male','Age'].mean() //计算所有男性年龄的平均值
    data={'country':['China','America','India'],'population':[14,3,12]}
    df_data = pd.DataFrame(data) //创建df数据集结构
    //显示及设置最大行及列
    pd.get_option('display.max_rows')
    pd.set_option('display.max_rows',6)
    pd.get_option('display.max_columns')
    pd.set_option('display.max_columns',6)
    //series是DataFrame中数据中单独取某列数据
    data = [10,11,12]
    index=['a','b','c']
    s = pd.Series(data=data,index=index)
    s.loc['b']
    s1.replace(to_replace = 100,value=101,inplace=True) //将100替换为101,inplace为True确实替换,False为仅仅打印的
    //更改series的索引
    s1.index=['a','b','d']
    s1.rename(index = {'a':'A'},inplace = True)
    //增加数据
    data=[100]
    index=['h']
    s2=pd.Series(data=data,index=index)
    s3=s1.append(s2)
    s3['j']=500
    //删除数据
    del s1['A']
    s1.drop(['b','d'],inplace = True)
    数据分析
    df = pd.DataFrame([[1,2,3],[4,5,6]],index=['a','b'],columns = ['A','B','C'])
    df.sum(axis=0/1) //默认对每列/行计算
    df.mean() //均值
    df.median() //中位数
    df.max() //最大
    df.min() //最小
    df.describe()
    df.cov() //协方差
    df.corr() //相关系数
    df['sex'].vaule_counts(ascending = True) //该列所有属性个数(从小到大)
    df['Age'].value_counts(ascending = True,bins = 5) //指定划分为几组

    group_names=['Yonth','Old']
    pd.value_counts(bins_res,labels=group_names) //标签分类计数,分版本0.24.2版本目前没有
    df.pivot_table(index='Sex',columns='Pclass',values='Fare',aggfunc='max/count') //各个船舱最大票价/人数
    //成年与未成年人幸存的概率

    //groupby操作
    df.groupby('key').sum() //分组求和
    df.groupby('key').aggregate(np.mean) //分组求均值
    df.groupby('Sex')['Age'].mean() //分组求均值
    df.groupby('Sex')['Age'].count() //分组计数
    df.groupby('Sex')['Age'].describe() //分组信息描述
    df.groupby('Sex')['Age'].agg([np.sum,np.mean,np.std]) //自定义信息
    //merge合并函数

    Data.sort_values(by=['group','data'],ascending=[False,True],inplace=True)
    data=pd.DataFrame({'k1':['one']*3+['two']*4,'k2':[3,2,1,3,3,4,4]}) //创建数据集
    data.drop_duplicates() //去除重复行
    data.drop_duplicates(subset='k1') //以某一行去除重复行
    Df.assign(ration=df['data1']/df['data2']) //增加数据
    Df.isnull() //判断函数所有的确实情况
    Df.isnull().any(axis=1) //是否存在缺失
    Df.fillna(5) //数值填充
    //apply自定义函数

    //时间操作
    ts=pd.Timestamp('2017-11-24') //转为时间戳
    Ts.month //取月
    Ts.day //日
    Ts+pd.timedelta('5 days') //加5天
    Pd.to_datetime(s) //转为日期
    Ts.dt.hour/weekday //转为小时周
    Pd.Series(pd.date_range(start='2017-11-24',periods=10,freq='12H')) //获得一连串数据
    df = pd.read_csv('../data/Titanic-dataset-master/df.csv',index_col=0,parse_dates=True) //将时间特征作为索引
    Data['2013']
    Data['2012-01':'2012-03']
    Data[(data.index.hour > 8) & data.index.hour < 12] //时间序列作为索引
    Data.resample('D'/'3D'/'M').mean().head() //以天/3天/月为周期进行采样计算均值
    //大数据处理技巧
    对数据结构分析及内存占用情况

     //查看类型转换前后的内存占用情况

  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/moss-yang/p/13733695.html
Copyright © 2011-2022 走看看