1.介绍几个DataFrame的小功能

检查数据类型 df.dtypes

df=DataFrame({'name':['zs,','ls','ww','zl'],'score':[19,29,39,20],'date':['2019-10-10','2019-10-11','2019-10-12','2019-10-13']})df.dtypesname objectscore int64date objectdtype: object

将'date'这行数据转换为时间数据类型

df.date=pd.to_datetime(df.date)df.dtypesname objectscore int64date datetime64[ns]dtype: object

将'date'设置为行索引

df.set_index('date',inplace=True)dfdate name score 2019-10-10 zs 192019-10-11 ls 292019-10-12 ww 392019-10-13 zl 20

可视化

import matplotlib.pyplot as plot%matplotlib inlinedf['score'].plot()

2.pandas数据处理

(1)删除重复元素

df.drop_duplicates(subset=None, keep='first', inplace=False)df = DataFrame({'color':['white','white','red','red','white'],'value':[2,1,3,3,2]})display(df,df.duplicated(),df.drop_duplicates())输出:colorvalue0white21white12red33red34white20 False1 False2 False3 True4 Truedtype: boolcolorvalue0white21white12red3

(2)映射

映射的含义:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定

需要使用字典:

map = {'label1':'value1','label2':'value2', ... }

包含三种操作:

a. replace()函数:替换元素

df = DataFrame({'item':['ball','mug','pen'],'color':['white','rosso','verde'], 'price':[5.56,4.20,1.30]})newcolors = {'rosso':'red','verde':'green','pen':'pi'}df.replace(newcolors)itemcolorprice0ballwhite5.561mugred4.202pigreen1.30

b. 最重要:map()函数:新建一列

!!!map中返回的数据是一个具体值,不能迭代

使用map()函数,由已有的列生成一个新列,适合处理某一单独的列df3 = DataFrame({'color':['red','green','blue'],'project':['math','english','chemistry']})price = {'red':5.56,'green':3.14,'chemistry':2.79}df3['price'] = df3['color'].map(price)display(df3)输出:colorprojectprice0redmath5.561greenenglish3.142bluechemistryNaN

c. rename()函数:替换索引

df4 = DataFrame({'color':['white','gray','purple','blue','green'],'value':np.random.randint(10,size = 5)})new_index = {0:'first',1:'two',2:'three',3:'four',4:'five'}display(df4,df4.rename(new_index))输出:colorvalue0white21gray02purple93blue24green0colorvaluefirstwhite2twogray0threepurple9fourblue2fivegreen0

(3)异常值检查和过滤

使用describe()函数查看每一列的描述性统计量

np.random.seed(0)df = DataFrame(np.random.randint(10,size = 10))display(df.head(10),df.describe())输出:005102333475963758294 0count10.000000mean4.100000std2.558211min0.00000025%3.00000050%3.50000075%5.000000max9.000000

使用std()函数可以求得DataFrame对象每一列的标准差

df2=DataFrame(np.random.randint(10,100,size=(8,8)))df2.std()0 26.7177711 20.3118542 20.2608003 26.0463194 28.6602645 36.4025126 18.0158667 22.646349dtype: float64

根据每一列的标准差,对DataFrame元素进行过滤。借助any()函数,对每一列应用筛选条件

display(df.std(),np.abs(df)>(3*df.std()),df[(np.abs(df)>df.std()*3).any(axis = 1)])0 2.558211dtype: float64 00False1False2False3False4False5True6False7False8False9False059DataFrame.any功能说明DataFrame.any(self,axis=0,bool_only=None, skipna=True, level=None,**kwargs,)Return whether any element is True, potentially over an axis.

(4)排序

使用.take()函数排序,可以借助np.random.permutation()函数随机排序

df5 = DataFrame(np.arange(25).reshape(5,5))new_order = np.random.permutation(5)display(df5,new_order,df5.take(new_order))输出:01234001234156789210111213143151617181942021222324array([4, 2, 3, 1, 0]) 0 1 2 3442021222324210111213143151617181915 6 7 8900 1 2 34

随机抽样

当DataFrame规模足够大时,直接使用np.random.randint()函数,就配合take()函数实现随机抽样

sample = np.random.randint(0,len(df5),size = 3)df.take(sample)输出:012340012342101112131442021222324

(5)数据聚合

df = DataFrame({'color':['white','red','green','red'],'item':['ball','mug','pen','pencil'], 'price1':np.random.rand(4),'price2':np.random.rand(4)})g = df.groupby('color')['price1']display(df,g,g.groups,type(g))display(g.sum(),g.mean(),g.max())输出:coloritemprice1price20whiteball0.6527900.4143691redmug0.6350590.4746982greenpen0.9953000.6235103redpencil0.5818500.338008{'green': Int64Index([2], dtype='int64'), 'red': Int64Index([1, 3], dtype='int64'), 'white': Int64Index([0], dtype='int64')}pandas.core.groupby.SeriesGroupBycolorgreen 0.995300red 1.216909white 0.652790Name: price1, dtype: float64colorgreen 0.995300red 0.608455white 0.652790Name: price1, dtype: float64colorgreen 0.995300red 0.635059white 0.652790Name: price1, dtype: float64

(6)高级数据聚合

可以使用pd.merge()函数包聚合操作的计算结果添加到df的每一行

d1={'item':['luobo','baicai','lajiao','donggua','luobo','baicai','lajiao','donggua'], 'color':['white','white','red','green','white','white','red','green'], 'weight':np.random.randint(10,size = 8), 'price':np.random.randint(10,size = 8)}df = DataFrame(d1)sums = df.groupby('color').sum().add_prefix('total_')items = df.groupby('item')['price','weight'].sum()means = items['price']/items['weight']means = DataFrame(means,columns=['means_price'])df2 = pd.merge(df,sums,left_on = 'color',right_index = True)df3 = pd.merge(df2,means,left_on = 'item',right_index = True)display(df2,df3)输出:coloritempriceweight0whiteluobo921whitebaicai592redlajiao583greendonggua114whiteluobo745whitebaicai806redlajiao687greendonggua43total_pricetotal_weightcolorgreen54red1116white2915pandas.core.frame.DataFramepandas.core.frame.DataFrameOut[141]:coloritempriceweighttotal_pricetotal_weight0whiteluobo9229151whitebaicai5929154whiteluobo7429155whitebaicai8029152redlajiao5811166redlajiao6811163greendonggua11547greendonggua4354

可以使用transform和apply实现相同功能

transform

d1={'item':['luobo','baicai','lajiao','donggua','luobo','baicai','lajiao','donggua'], 'color':['white','white','red','green','white','white','red','green'], 'weight':np.random.randint(10,size = 8), 'price':np.random.randint(10,size = 8)}df = DataFrame(d1)sum1 = df.groupby('color')['price','weight'].sum().add_prefix("total_")sums2 = df.groupby('color')['price','weight'].transform(lambda x:x.sum()).add_prefix('total_')sums3 = df.groupby('color')['price','weight'].transform(sum).add_prefix('total_')display(sum,df,sum1,sums2,sums3)输出:coloritempriceweight0whiteluobo771whitebaicai772redlajiao273greendonggua664whiteluobo125whitebaicai366red lajiao707greendonggua02total_pricetotal_weightcolorgreen68red97white1822total_pricetotal_weight01822118222973684182251822697768total_pricetotal_weight01822118222973684182251822697768

apply

def sum_price(x): return x.sum()sums3 = df.groupby('color')['price','weight'].apply(lambda x:x.sum()).add_prefix('total_')sums4 = df.groupby('color')['price','weight'].apply(sum_price).add_prefix('total_')display(df,sums3,sums4)输出:coloritempriceweight0whiteluobo441whitebaicai032redlajiao043greendonggua754whiteluobo315whitebaicai336redlajiao067greendonggua07colortotal_pricetotal_weightgreen712red010white1011colortotals_pricetotals_weightgreen712red010white1011

pandas新建dataframe_pandas数据处理相关推荐

  1. 09 Python之Pandas库之数据处理与规整

    Pandas库之数据处理与规整 import numpy as np import pandas as pd import pandas_datareader.data as web import d ...

  2. pandas Excel 光谱数据处理

    pandas Excel 光谱数据处理 在化学专业的学习中常常会使用到光谱分析,但是这种资料难以寻找,通常要进行手动绘制.通过查找数据库的源码,可以获取此数据,本文是使用pandas对此数据进行处理, ...

  3. 数据分析之pandas常见的数据处理(四)

    常见聚合方法 方法 说明 count 计数 describe 给出各列的常用统计量 min,max 最大最小值 argmin,argmax 最大最小值的索引位置(整数) idxmin,idxmax 最 ...

  4. pandas: DataFrame在数据处理时一些常用的操作汇总

    对自己在数据处理中经常使用却经常忘记的一些操作汇总.我用的多,大家应该用的也很多,有需要的可以转载follow. 1.dataframe数据筛选:loc,iloc,ix,at,iat loc:需要用行 ...

  5. 【数据预处理】Pandas缺失的数据处理

    目录 缺少数据基础 何时/为何 数据丢失? 被视为"缺失"的值 日期时间 插入缺失数据 缺少数据的计算 Sum/Prod of Empties/Nans GroupBy中的NA值 ...

  6. pandas生意参谋数据处理

    import os import pandas as pdhhye = os.listdir(r'C:\Users\18352\Desktop\Python\read_Excel\01-天猫行业数据分 ...

  7. pandas之离散化数据处理get_dummies以及填补缺失值的方法

    文章目录 介绍 实例 用途 拓展 正态分布拟合 随机森林 介绍 pandas.get_dummies(data,prefix=None, prefix_sep='_', dummy_na=False, ...

  8. python的pandas和numpy数据处理基础知识总结(各种干货和常用方法,使用鸢尾花数据集)

    本次处理使用的是iris(鸢尾花)数据集,可在网上获取,下载之后放在代码运行的目录下 前四列为花的特征,最后一列species表示花的品种包括:Iris-setosa,Iris-versicolor, ...

  9. pandas dataframe column_数据处理的瑞士军刀pandas | 火星技术帖

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 投资区块链,猛戳:火星财经App下载

最新文章

  1. PCL点云特征描述与提取(1)
  2. 使用深度学习和树搜索进行从零开始的既快又慢的学习
  3. 精品软件 推荐 百度杀毒 软件
  4. leetcode 1143. Longest Common Subsequence | 1143. 最长公共子序列(动态规划,暴力递归->傻缓存->dp)
  5. 打包mac应用_把网址链接打包成电脑软件的制作方法
  6. php为什么要使用变量,为什么在PHP或其他语言中使用动态变量(变量变量)
  7. 四六级考试中的计算机类文章,毕业设计论文-基于web的英语四六级模拟在线考试系统.doc...
  8. 【POJ】2296 Map Labeler
  9. 大一计算机文化基础上机,计算机文化基础上机试题
  10. 英国政府采用开源办公套件“GovOffice”
  11. 【208期推荐】HIS走免费开源,医疗软件行业会变天么?
  12. 百度云OCR身份证识别
  13. 手把手教你做一个简单的VB数据库程序
  14. 看产品经理怎么用360实现Java垃圾回收!
  15. Java项目集成工作流引擎解决方案及实例展示(前后分离版)
  16. DNA序列编码中Hairpin的定义和计算
  17. C++ 11字符数组/字符串/数字转换/字符串拼接
  18. IGBT的驱动和过流保护电路的研究
  19. 什么是overlay?如何定制overlay?
  20. linux新建分区步骤

热门文章

  1. NGINX最新API管理模块已可用,针对内部和外部API进行了优化
  2. springmvc 重定向传递参数
  3. Python中lambda使用简易教程
  4. ASP.NET Aries JSAPI 文档说明:AR.DataGrid、AR.Dictionary
  5. 怎么禁止实例化对象---2016-08-31
  6. 关于Android ViewPager 与 Fragment 一起使用碰到的问题
  7. SHELL相关的特殊字符总结
  8. 关于linux挂载windows共享文件夹的试验
  9. 如何建立一个FTP服务器(SERV-U使用教程)
  10. jquery 里面对数组去重操作-unique