当前位置: 首页 > news >正文

手把手教建设网站杭州app定制开发

手把手教建设网站,杭州app定制开发,WordPress安全社区,推广策略组合1.引入 前面一篇文章我们介绍了numpy#xff0c;但numpy的特长并不是在于数据处理#xff0c;而是在它能非常方便地实现科学计算#xff0c;所以我们日常对数据进行处理时用的numpy情况并不是很多#xff0c;我们需要处理的数据一般都是带有列标签和index索引的#xff0…1.引入 前面一篇文章我们介绍了numpy但numpy的特长并不是在于数据处理而是在它能非常方便地实现科学计算所以我们日常对数据进行处理时用的numpy情况并不是很多我们需要处理的数据一般都是带有列标签和index索引的而numpy并不支持这些这时我们就需要pandas上场啦  2.WHAT? Pandas是基于Numpy构建的库在数据处理方面可以把它理解为numpy加强版同时Pandas也是一项开源项目 。不同于numpy的是pandas拥有种数据结构Series和DataFrame  下面我们就来生成一个简单的series对象来方便理解 In [1]: from pandas import Series,DataFrame In [2]: import pandas as pd In [3]: data Series([1,2,3,4],index [a,b,c,d]) In [4]: data Out[4]: a 1 b 2 c 3 d 4 dtype: int64 Series是一种类似一维数组的数据结构由一组数据和与之相关的index组成这个结构一看似乎与dict字典差不多我们知道字典是一种无序的数据结构而pandas中的Series的数据结构不一样它相当于定长有序的字典并且它的index和value之间是独立的两者的索引还是有区别的Series的index是可变的而dict字典的key值是不可变的。 下面照例生成一个简单的DataFrame对象 In [8]: data {a:[1,2,3],b:[we,you,they],c:[btc,eos,ae]} In [9]: df DataFrame(data) In [10]: df Out[10]:a b c 0 1 we btc 1 2 you eos 2 3 they ae DataFrame这种数据结构我们可以把它看作是一张二维表DataFrame长得跟我们平时使用的Excel表格差不多DataFrame的横行称为columns竖列和Series一样称为indexDataFrame每一列可以是不同类型的值集合所以DataFrame你也可以把它视为不同数据类型同一index的Series集合。 3.WHY? 科学计算方面numpy是优势但在数据处理方面DataFrame就更胜一筹了事实上DataFrame已经覆盖了一部分的数据操作了对于数据挖掘来说工作可大概分为读取数据-数据清洗-分析建模-结果展示 先说说读取数据Pandas提供强大的IO读取工具csv格式、Excel文件、数据库等都可以非常简便地读取对于大数据pandas也支持大文件的分块读取 接下来就是数据清洗面对数据集我们遇到最多的情况就是存在缺失值Pandas把各种类型数据类型的缺失值统一称为NaN这里要多说几句NoneNone这个结果是true但np.nannp.nan这个结果是falseNaN在官方文档中定义的是float类型有关于NaN和None的区别以及使用有位博主已经做好整理None vs NaN,Pandas提供许多方便快捷的方法来处理这些缺失值NaN。 最重要的分析建模阶段Pandas自动且明确的数据对齐特性非常方便地使新的对象可以正确地与一组标签对齐有了这个特性Pandas就可以非常方便地将数据集进行拆分-重组操作。 最后就是结果展示阶段了我们都知道Matplotlib是个数据视图化的好工具Pandas与Matplotlib搭配不用复杂的代码就可以生成多种多样的数据视图。 4.HOW Series Series的两种生成方式 In [19]: data Series([222,btc,234,eos]) In [20]: data Out[20]: 0 222 1 btc 2 234 3 eos dtype: object 虽然我们在生成的时候没有设置index值但Series还是会自动帮我们生成index这种方式生成的Series结构跟list列表差不多可以把这种形式的Series理解为竖起来的list列表。 In [21]: data Series([1,2,3,4],index [a,b,c,d]) In [22]: data Out[22]: a 1 b 2 c 3 d 4 dtype: int64 这种形式的Series可以理解为numpy的array外面披了一件index的马甲所以array的相关操作Series同样也是支持的。结构非常相似的dict字典同样也是可以转化为Series格式的 In [29]: dic {a:1,b:2,c:as} In [30]: dicSeries Series(dic) 查看Series的相关信息 In [32]: data.index Out[32]: Index([a, b, c, d], dtypeobject)In [33]: data.values Out[33]: array([1, 2, 3, 4], dtypeint64)In [35]: a in data #in方法默认判断的是index值 Out[35]: True Series的NaN生成 In [46]: index1 [ a,b,c,d] In [47]: dic {b:1,c:1,d:1} In [48]: data2 Series(dic,indexindex1) In [49]: data2 Out[49]: a NaN b 1.0 c 1.0 d 1.0 dtype: float64 从这里我们可以看出Series的生成依据的是index值index‘a’在字典dic的key中并不存在Series自然也找不到’a’的对应value值这种情况下Pandas就会自动生成NaN(not a number)来填补缺失值这里还有个有趣的现象原本dtype是int类型生成NaN后就变成了float类型了因为NaN的官方定义就是float类型。 NaN的相关查询 In [58]: data2.isnull() Out[58]: a True b False c False d False dtype: boolIn [59]: data2.notnull() Out[59]: a False b True c True d True dtype: boolIn [60]: data2[data2.isnull()True] #嵌套查询NaN Out[60]: a NaN dtype: float64In [64]: data2.count() #统计非NaN个数 Out[64]: 3 切记切记查询NaN值切记不要使用np.nannp.nan这种形式来作为判断条件结果永远是False是用作值判断的而NaN并没有值如果你不想使用上方的判断方法你可以使用is作为判断方法is是对象引用判断np.nan is np.nan结果就是你要的True。 Series自动对齐 In [72]: data1 Out[72]: a 1 asd 1 b 1 dtype: int64In [73]: data Out[73]: a 1 b 2 c 3 d 4 dtype: int64In [74]: datadata1 Out[74]: a 2.0 asd NaN b 3.0 c NaN d NaN dtype: float64 从上面两个Series中不难看出各自的index所处位置并不完全相同这时Series的自动对齐特性就发挥作用了在算术运算中Series会自动寻找匹配的index值进行运算如果index不存在匹配则自动赋予NaN,值得注意的是任何数NaNNaN,你可以把NaN理解为吸收一切的黑洞。 Series的name属性 In [84]: data.index.name abc In [85]: data.name test In [86]: data Out[86]: abc a 1 b 2 c 3 d 4 Name: test, dtype: int64 Series对象本身及其索引index都有一个name属性name属性主要发挥作用是在DataFrame中当我们把一个Series对象放进DataFrame中新的列将根据我们的name属性对该列进行命名如果我们没有给Series命名DataFrame则会自动帮我们命名为0。 5.DataFrame DataFrame的生成 In [87]: data {name: [BTC, ETH, EOS], price:[50000, 4000, 150]} In [88]: data DataFrame(data) In [89]: data Out[89]:name price 0 BTC 50000 1 ETH 4000 2 EOS 150 DataFrame的生成与Series差不多你可以自己指定index也可不指定DataFrame会自动帮你补上。 查看DataFrame的相关信息 In [95]: data.index Out[95]: RangeIndex(start0, stop3, step1)In [96]: data.values Out[96]: array([[BTC, 50000],[ETH, 4000],[EOS, 150]], dtypeobject)In [97]: data.columns #DataFrame的列标签 Out[97]: Index([name, price], dtypeobject) DataFrame的索引 In [92]: data.name Out[92]: 0 BTC 1 ETH 2 EOS Name: name, dtype: objectIn [93]: data[name] Out[93]: 0 BTC 1 ETH 2 EOS Name: name, dtype: objectIn [94]: data.iloc[1] #loc[name]查询的是行标签 Out[94]: name ETH price 4000 Name: 1, dtype: object 其实行索引除了ilocloc还有个ixix既可以进行行标签索引也可以进行行号索引但这也大大增加了它的不确定性有时会出现一些奇怪的问题所以pandas在0.20.0版本的时候就把ix给弃用了。 6.DataFrame的常用操作 简单地增加行、列 In [105]: data[type] token #增加列In [106]: data Out[106]:name price type 0 BTC 50000 token 1 ETH 4000 token 2 EOS 150 token In [109]: data.loc[3] [ae,200,token] #增加行In [110]: data Out[110]:name price type 0 BTC 50000 token 1 ETH 4000 token 2 EOS 150 token 3 ae 200 token 删除行、列操作 In [117]: del data[type] #删除列In [118]: data Out[118]:name price 0 BTC 50000 1 ETH 4000 2 EOS 150 3 ae 200 In [120]: data.drop([2]) #删除行 Out[120]:name price 0 BTC 50000 1 ETH 4000 3 ae 200In [121]: data Out[121]:name price 0 BTC 50000 1 ETH 4000 2 EOS 150 3 ae 200 这里需要注意的是使用drop方法返回的是Copy而不是视图要想真正在原数据里删除行就要设置inplaceTrue In [125]: data.drop([2],inplaceTrue)In [126]: data Out[126]:name price 0 BTC 50000 1 ETH 4000 3 ae 200 设置某一列为index: In [131]: data.set_index([name],inplaceTrue)In [132]: data Out[132]:price name BTC 50000 ETH 4000 ae 200In [133]: data.reset_index(inplaceTrue) #将index返回回dataframe中In [134]: data Out[134]:name price 0 BTC 50000 1 ETH 4000 2 ae 200 处理缺失值: In [149]: data Out[149]:name price 0 BTC 50000.0 1 ETH 4000.0 2 ae 200.0 3 eos NaNIn [150]: data.dropna() #丢弃含有缺失值的行 Out[150]:name price 0 BTC 50000.0 1 ETH 4000.0 2 ae 200.0In [151]: data.fillna(0) #填充缺失值数据为0 Out[151]:name price 0 BTC 50000.0 1 ETH 4000.0 2 ae 200.0 3 eos 0.0 还是需要注意这些方法返回的是copy而不是视图如果想在原数据上改变别忘了inplaceTrue。 数据合并 In [160]: data Out[160]:name price 0 BTC 50000.0 1 ETH 4000.0 2 ae 200.0 3 eos NaNIn [161]: data1 Out[161]:name other 0 BTC 50000 1 BTC 4000 2 EOS 150In [162]: pd.merge(data,data1,onname,howleft) #以name为key进行左连接 Out[162]:name price other 0 BTC 50000.0 50000.0 1 BTC 50000.0 4000.0 2 ETH 4000.0 NaN 3 ae 200.0 NaN 4 eos NaN NaN 平时进行数据合并操作更多的会出一种情况那就是出现重复值DataFrame也为我们提供了简便的方法 data.drop_duplicates(inplaceTrue) 数据的简单保存与读取 In [165]: data.to_csv(test.csv)In [166]: pd.read_csv(test.csv) Out[166]:Unnamed: 0 name price 0 0 BTC 50000.0 1 1 ETH 4000.0 2 2 ae 200.0 3 3 eos NaN 为什么会出现这种情况呢从头看到尾的同学可能就看出来了增加第三行时我用的是loc[‘3’]行标签来增加的而read_csv方法是默认index是从0开始增长的此时只需要我们设置下index参数就ok了 In [167]: data.to_csv(test.csv,indexNone) #不保存行索引 In [168]: pd.read_csv(test.csv) Out[168]:name price 0 BTC 50000.0 1 ETH 4000.0 2 ae 200.0 3 eos NaN 其他的还有header参数, 这些参数都是我们在保存数据时需要注意的。
http://www.zqtcl.cn/news/293850/

相关文章:

  • 商城类网站用什么做珠海找工作哪个网站好
  • 宁波建站模板厂家太原企业网站排名
  • 厦门网站建设定制多少钱wordpress能用一个数据库
  • 找人做网站需要准备什么材料怎么建设自己淘宝网站首页
  • 汽车网站建设费用js怎么做网站
  • 四川万景建设工程有限公司网站做公司网站用什么系统
  • 长沙企业建站系统3d视频制作公司
  • 长沙的网站制作公司网站建设方案的需求分析
  • 电子商务网站发展建设论文网站开发需要经过的几个主要阶段
  • 建设网站外贸做网站必须会php吗
  • 网站建设费用的请示丹徒区建设局网站
  • 上海网站制作机构个人做外贸网站违法吗
  • 咖啡厅网站开发目标汕头最新消息今天
  • 广州做外贸网站的公司简介做行业门户网站注意什么
  • 专业网页网站设计图书成都医院做网站建设
  • 浙江网站建设dyfwzx网站开发的广告词
  • 网站 seo 优化 效果中华室内设计网公众号下载
  • 如何自己建网站企业网站建站快车的优点
  • 目前做网站的公司有哪些管理系统中的计算机应用
  • 百度网站服务器企业网站报价
  • 网站后台账户如何做会计分录电商数据查询平台
  • 素材动图网站90设计app下载
  • 绍兴网站设计公司网站空间位置是什么
  • 高端网站设计品牌珠海网站建设最新报价
  • 做网站的商家怎么赚取流量费房地产怎么做网站推广
  • 企业网站建设基本流程网站积分方案
  • 网站定位与功能分析网站常见故障
  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图