Pandas学习笔记

       Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。


In [1]: import pandas

In [2]: food_info = pandas.read_csv("food_info.csv")//读取本地csv文件
        print type(food_info)//打印数据类型
		print "-------------------------"
        print food_info.dtypes//数据中的类型集合
        print help(pandas.read_csv)//打印帮助文档
Out[2]: <class 'pandas.core.frame.DataFrame'>//pandas的主要数据类型
        -------------------------
        NDB_No               int64
        Shrt_Desc           object//相当于string
        Water_(g)          float64
        Energ_Kcal           int64
        Protein_(g)        float64		
		
In [3]: food_info.head()//读取数据的前5行
        food_info.head(3)//读取前3行
		food_info.tail(4)//读取尾4行
		food_info.columns//获取所有的列名
		food_info.shape//查看数据的规模(m行n列)
Out[3]: NDB_No	Shrt_Desc	Water_(g)	Energ_Kcal	Protein_(g)	Lipid_Tot_(g)	Ash_(g)	Carbohydrt_(g)	Fiber_TD_(g)	Sugar_Tot_(g)	...	Vit_A_IU	Vit_A_RAE	Vit_E_(mg)	Vit_D_mcg	Vit_D_IU	Vit_K_(mcg)	FA_Sat_(g)	FA_Mono_(g)	FA_Poly_(g)	Cholestrl_(mg)
           0	1001	BUTTER WITH SALT	15.87	717	0.85	81.11	2.11	0.06	0.0	0.06	...	2499.0	684.0	2.32	1.5	60.0	7.0	51.368	21.021	3.043	215.0
           1	1002	BUTTER WHIPPED WITH SALT	15.87	717	0.85	81.11	2.11	0.06	0.0	0.06	...	2499.0	684.0	2.32	1.5	60.0	7.0	50.489	23.426	3.012	219.0
           2	1003	BUTTER OIL ANHYDROUS	0.24	876	0.28	99.48	0.00	0.00	0.0	0.00	...	3069.0	840.0	2.80	1.8	73.0	8.6	61.924	28.732	3.694	256.0
           3	1004	CHEESE BLUE	42.41	353	21.40	28.74	5.11	2.34	0.0	0.50	...	721.0	198.0	0.25	0.5	21.0	2.4	18.669	7.778	0.800	75.0
           4	1005	CHEESE BRICK	41.11	371	23.24	29.68	3.18	2.79	0.0	0.51	...	1080.0	292.0	0.26	0.5	22.0	2.5	18.764	8.598	0.784	94.0
           5 rows × 36 columns		
		
In [4]: food_info.loc[0]//读取第1行数据
        food_info.loc[3:6]//读取3,4,5,6行
		ndb_col = food_info["NDB_No"]//读取"NDB_No"列
		columns = ["NDB_No","Shrt_Desc"]
		N_S = food_info[columns]//读取"NDB_No"和"Shrt_Desc"列	
		
In [5]: columns = food_info.columns.tolist()//获取列名列表
        print columns
        gram_columns = []

        for c in columns:
           if c.endswith("(g)")://找出以(g)结尾的列
              gram_columns.append(c)
        gram_df = food_info[gram_columns]
        print gram_df		
Out[5]: ['NDB_No', 'Shrt_Desc', 'Water_(g)', 'Energ_Kcal', 'Protein_(g)', 'Lipid_Tot_(g)', 'Ash_(g)', 'Carbohydrt_(g)', 'Fiber_TD_(g)', 'Sugar_Tot_(g)', 'Calcium_(mg)', 'Iron_(mg)', 'Magnesium_(mg)', 'Phosphorus_(mg)', 'Potassium_(mg)', 'Sodium_(mg)', 'Zinc_(mg)', 'Copper_(mg)', 'Manganese_(mg)', 'Selenium_(mcg)', 'Vit_C_(mg)', 'Thiamin_(mg)', 'Riboflavin_(mg)', 'Niacin_(mg)', 'Vit_B6_(mg)', 'Vit_B12_(mcg)', 'Vit_A_IU', 'Vit_A_RAE', 'Vit_E_(mg)', 'Vit_D_mcg', 'Vit_D_IU', 'Vit_K_(mcg)', 'FA_Sat_(g)', 'FA_Mono_(g)', 'FA_Poly_(g)', 'Cholestrl_(mg)']
        Water_(g)  Protein_(g)  Lipid_Tot_(g)  Ash_(g)  Carbohydrt_(g)  \
        0      15.87         0.85          81.11     2.11            0.06   

        Fiber_TD_(g)  Sugar_Tot_(g)  FA_Sat_(g)  FA_Mono_(g)  FA_Poly_(g)  
        0           0.0           0.06      51.368       21.021        3.043 		
		
In [6]: food_info.sort_values("Water_(g)",inplace=True)//默认升序排序,inplace表示是否重新在原来数据上排序
        print food_info["Water_(g)"]
        food_info.sort_values("Water_(g)",inplace=True,ascending=False)//降序排序
        print "-------------------------"
		print food_info["Water_(g)"]		
Out[6]:	676       0.00
        743       0.00
        744       0.00
        745       0.00
        758       0.00
        761       0.00	
		-------------------------
		4209    100.00
        4377    100.00
        4378    100.00
        4376    100.00
        4348    100.00
        4404     99.98
        4372     99.98
		
In [7]: import pandas as pd
        import numpy as np
        titanic_survival = pd.read_csv("titanic_train.csv")//泰坦尼克号船员获救信息
        titanic_survival.head()		
Out[7]:	PassengerId	Survived	Pclass	Name	Sex	Age	SibSp	Parch	Ticket	Fare	Cabin	Embarked
               0	1	0	3	Braund, Mr. Owen Harris	male	22.0	1	0	A/5 21171	7.2500	NaN	S
               1	2	1	1	Cumings, Mrs. John Bradley (Florence Briggs Th...	female	38.0	1	0	PC 17599	71.2833	C85	C
               2	3	1	3	Heikkinen, Miss. Laina	female	26.0	0	0	STON/O2. 3101282	7.9250	NaN	S
               3	4	1	1	Futrelle, Mrs. Jacques Heath (Lily May Peel)	female	35.0	1	0	113803	53.1000	C123	S
               4	5	0	3	Allen, Mr. William Henry	male	35.0	0	0	373450	8.0500	NaN	S		
		
In [8]: age = titanic_survival["Age"]
        age.head(10)
        age_is_null = pd.isnull(age)
        print age_is_null//打印是否为null值
		print "-------------------------"
        age_null_true = age[age_is_null]
        print age_null_true//打印null值
		print "-------------------------"
        age_null_count = len(age_null_true)
        print age_null_count//统计null值个数		
Out[8]:	0      False
        1      False
        2      False
        3      False
        4      False
        5       True
        6      False
        -------------------------
        5     NaN
        17    NaN
        19    NaN
        26    NaN
        28    NaN
        29    NaN
        31    NaN
        -------------------------
        177

In [9]: good_ages = titanic_survival["Age"][age_is_null == False]//去除null后求平均年龄
        mean_age = sum(good_ages)/len(good_ages)
        print mean_age	
Out[9]:	29.6991176471		

In [10]: correct_mean_age = titanic_survival["Age"].mean()//直接求平均年龄
         print correct_mean_age	
Out[10]: 29.6991176471

		//pivot_table数据透视表函数,统计每个等级仓位的获救概率
In [11]: passenger_survival = titanic_survival.pivot_table(index="Pclass",values="Survived",aggfunc=np.mean)
         print passenger_survival	
Out[11]:         Survived
        Pclass          
          1       0.629630
          2       0.472826
          3       0.242363

		//统计每个等级仓位人的平均年龄
In [12]: passenger_mean_age = titanic_survival.pivot_table(index="Pclass",values="Age")
         print passenger_mean_age	
Out[12]:          Age
        Pclass          
          1       38.233441
          2       29.877630
          3       25.140620

		//求出变量"Embarked"和"Fare","Survived"之间的关系求和
In [13]: port_stats = titanic_survival.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)
         print port_stats	
Out[13]:                 Fare  Survived
         Embarked                      
         C         10072.2962        93
         Q          1022.2543        30
         S         17439.3988       217

In [14]: drop_na_columns = titanic_survival.dropna(axis=1)//去掉有空值的列
         print drop_na_columns
         new_titanic_survival = titanic_survival.dropna(axis=0,subset=["Age","Sex"])//去掉"Age","Sex"列有空值的行
         print new_titanic_survival	
Out[14]: 883  C.A./SOTON 34068   10.5000  
         884   SOTON/OQ 392076    7.0500  
         885            382652   29.1250  
         886            211536   13.0000  
         887            112053   30.0000  
         888        W./C. 6607   23.4500  
         889            111369   30.0000  
         890            370376    7.7500  
         [891 rows x 9 columns]
         
		 885      5            382652   29.1250          NaN        Q  
         886      0            211536   13.0000          NaN        S  
         887      0            112053   30.0000          B42        S  
         889      0            111369   30.0000         C148        C  
         890      0            370376    7.7500          NaN        Q  
         [714 rows x 12 columns]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值