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

石家庄做网站网络公司江西做网站的公司

石家庄做网站网络公司,江西做网站的公司,wordpress菜单排序,网页游戏大厅在线玩目前最常用的数据保存格式可能就是CSV格式了#xff0c;数据分析第一步就是获取数据#xff0c;怎样读取数据至关重要。 本文将以pandas read_csv方法为例#xff0c;详细介绍read_csv数据读取方法。再数据读取时进行数据预处理#xff0c;这样不仅可以加快读取速度#x…目前最常用的数据保存格式可能就是CSV格式了数据分析第一步就是获取数据怎样读取数据至关重要。 本文将以pandas read_csv方法为例详细介绍read_csv数据读取方法。再数据读取时进行数据预处理这样不仅可以加快读取速度同时为后期数据清洗及分析打下基础。 导入必要的库 import pandas as pd import numpy as np from pandas.api.types import CategoricalDtype from io import StringIO Specifying Column Data Types 可以指定整个DataFrame或各个列的数据类型 data pd.read_csv(diamonds.csv,dtypeobject) data.head() out: caratcutcolorclaritydepthtablepricexyz 00.23IdealESI261.5553263.953.982.43 10.21PremiumESI159.8613263.893.842.31 20.23GoodEVS156.9653274.054.072.31 30.29PremiumIVS262.4583344.24.232.63 40.31GoodJSI263.3583354.344.352.75 data.dtypes out: carat object cut object color object clarity object depth object table object price object x object y object z object dtype: object data pd.read_csv(diamonds.csv,dtype{carat: np.float64,depth: np.float64,table:np.float64}) data.dtypes out: carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object pandas提供了多种方法来确保列仅包含一个dtype。例如,可以使用read_csv的converters参数 data pd.read_csv(diamonds.csv,converters{carat:str}) data.dtypes out: carat object cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object data.carat.apply(type).value_counts() out:53940 Name: carat, dtype: int64 或者可以在读取数据后使用to_numeric函数强进行类型转换。 data.carat pd.to_numeric(data[carat],errorscoerce) data.carat.apply(type).value_counts() out:53940 Name: carat, dtype: int64 Specigying Categorical Dtype¶ 可以通过指定dtype category或dtype CategoricalDtype类别有序直接解析类别列。 data pd.read_csv(diamonds.csv,dtypecategory) data.dtypes out: carat category cut category color category clarity category depth category table category price category x category y category z category dtype: object 可以使用dict指定将某列为Category类型 data pd.read_csv(diamonds.csv,dtype{cut:category}) data.dtypes out: carat float64 cut category color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object data.cut.value_counts() out: Ideal 21551 Premium 13791 Very Good 12082 Good 4906 Fair 1610 Name: cut, dtype: int64 指定dtype category将导致无序分类其类别是数据中观察到的唯一值。 要更好地控制类别和顺序可以创建CategoricalDtype然后将其传递给该列的dtype。 from pandas.api.types import CategoricalDtype dtype CategoricalDtype([Ideal,Premium,Very Good,Good,Fair],orderedTrue) data pd.read_csv(diamonds.csv,dtype{cut:dtype}) data.dtypes out: carat float64 cut category color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object 使用dtype CategoricalDtype时dtype.categories之外的“意外”值将被视为缺失值。 from pandas.api.types import CategoricalDtype dtype CategoricalDtype([Ideal,Premium,Very Good,Good],orderedTrue) data pd.read_csv(diamonds.csv,dtype{cut:dtype}) data[data.cut.isnull()].head() out: caratcutcolorclaritydepthtablepricexyz 80.22NaNEVS265.161.03373.873.782.49 910.86NaNESI255.169.027576.456.333.52 970.96NaNFSI266.362.027596.275.954.07 1230.70NaNFVS264.557.027625.575.533.58 1240.70NaNFVS265.355.027625.635.583.66 Naming and Using Columns Handling Column names 文件可能包含标题行也可能没有标题行。 pandas假定第一行应用作列名 from io import StringIO data (a,b,c\n 1,2,3\n 4,5,6\n 7,8,9) pd.read_csv(StringIO(data)) out: abc 0123 1456 2789 通过指定name与header可以重命名列以及是否丢弃标题行 pd.read_csv(StringIO(data),names[foo,bar,baz],header0) out: foobarbaz 0123 1456 2789 pd.read_csv(StringIO(data),names[foo,bar,baz],headerNone) out: foobarbaz 0abc 1123 2456 3789 如果标题不在第一行中则将行号传递给标题将跳过header前面的行 data (skip this skip it\n a,b,c\n 1,2,3\n 4,5,6\n 7,8,9) pd.read_csv(StringIO(data),header1) out: abc 0123 1456 2789 Duplicate Names Parsing 如果文件或标题包含重复的名称默认情况下pandas会将它们区分开以防止覆盖数据. data (a,b,a\n 0,1,2\n 3,4,5) print(data) out: a,b,a 0,1,2 3,4,5 pd.read_csv(StringIO(data)) out: aba.1 0012 1345 Filtering Columns(usecols) usecols参数允许您使用列名位置号或可调用的方法选择文件中列的任何子集. data a,b,c,d\n1,2,3,foo\n4,5,6,bar\n7,8,9,baz pd.read_csv(StringIO(data)) out: abcd 0123foo 1456bar 2789baz pd.read_csv(StringIO(data),usecols[b,d]) out: bd 02foo 15bar 28baz pd.read_csv(StringIO(data),usecols[0,1,3]) out: abd 012foo 145bar 278baz pd.read_csv(StringIO(data),usecolslambda x: x.upper() in [A,C]) out: ac 013 146 279 pd.read_csv(StringIO(data),usecolslambda x: x.upper() not in [A,C]) out: bd 02foo 15bar 28baz Comments and Empty Lines Ignoring Line Comments And Empty Lines 如果指定了comment参数则将忽略注释行。 默认情况下空行也将被忽略。 data (\n a,b,c\n \n # commented line\n 1,2,3\n \n 4,5,6) print(data) out: a,b,c # commented line 1,2,3 4,5,6 pd.read_csv(StringIO(data),comment#) out: abc 0123 1456 如果skip_blank_lines False则read_csv将不会忽略空行 pd.read_csv(StringIO(data),comment#,skip_blank_linesFalse) out: abc NaNNaN 123 NaNNaNNaN 456 警告被忽略的行的存在可能会导致涉及行号的歧义 参数标题使用行号忽略注释/空行而行首使用行号包括注释/空行. data (#comment\n a,b,c\n A,B,C\n 1,2,3) pd.read_csv(StringIO(data),comment#,header1) out: ABC 0123 pd.read_csv(StringIO(data),comment#,skiprows2) ABC 0123 如果同时指定了skiprows和header则header将相对于skiprows的末尾。 例如 data (# empty\n # second empty line\n # third emptyline\n X,Y,Z\n 1,2,3\n A,B,C\n 1,2.,4.\n 5.,NaN,10.0\n) print(data) out: # empty # second empty line # third emptyline X,Y,Z 1,2,3 A,B,C 1,2.,4. 5.,NaN,10.0 pd.read_csv(StringIO(data),comment#,skiprows4,header1) out: ABC 01.02.04.0 15.0NaN10.0 pd.read_csv(StringIO(data),skiprows4,header1) out: ABC 01.02.04.0 15.0NaN10.0 Comments tmp (ID,level,category\n Patient1,123000,x # really unpleasant\n Patient2,23000,y # wouldn\t take his medicine\n Patient3,1234018,z # awesome) pd.read_csv(StringIO(tmp)) out: IDlevelcategory 0Patient1123000x # really unpleasant 1Patient223000y # wouldnt take his medicine 2Patient31234018z # awesome pd.read_csv(StringIO(tmp),comment#) out: IDlevelcategory 0Patient1123000x 1Patient223000y 2Patient31234018z Index Columns And Trailing Delimiters data (a,b,c\n 4,apple,bat,5.7\n 8,orange,cow,10) pd.read_csv(StringIO(data)) out: abc 4applebat5.7 8orangecow10.0 pd.read_csv(StringIO(data),index_col0) out: abc 4applebat5.7 8orangecow10.0 data (a,b,c\n 4,apple,bat\n 8,orange,cow) pd.read_csv(StringIO(data)) out: abc 04applebat 18orangecow pd.read_csv(StringIO(data),index_col0) out: bc a 4applebat 8orangecow pd.read_csv(StringIO(data),usecols[b,c]) out: bc 0applebat 1orangecow pd.read_csv(StringIO(data),usecols[b,c],index_col0) out: c b applebat orangecow Date Handling Specifying Date Columns 为了更好地使用日期时间数据read_csv使用关键字参数parse_dates和date_parser允许用户指定列的日期/时间格式将string转换为日期时间对象。 foo (date,A,B,C\n 2009-01-01,a,1,2\n 2009-01-02,b,3,4\n 2009-01-03,c,4,5\n) pd.read_csv(StringIO(foo),index_col0,parse_datesTrue) out: ABC date 2009-01-01a12 2009-01-02b34 2009-01-03c45 pd.read_csv(StringIO(foo),index_col0,parse_datesTrue).index DatetimeIndex([2009-01-01, 2009-01-02, 2009-01-03], dtypedatetime64[ns], namedate, freqNone) 通常我们可能希望分别存储日期和时间数据或分别存储各种日期字段。 parse_dates关键字可用于指定列的组合以从中解析日期和/或时间。 您可以指定要parse_dates的列或嵌套列表结果日期列将被添加到输出的前面以便不影响现有的列顺序新的列名为各列Name的连接。 tmp (KORD,19990127, 19:00:00, 18:56:00, 0.8100\n KORD,19990127, 20:00:00, 19:56:00, 0.0100\n KORD,19990127, 21:00:00, 20:56:00, -0.5900\n KORD,19990127, 21:00:00, 21:18:00, -0.9900\n KORD,19990127, 22:00:00, 21:56:00, -0.5900\n KORD,19990127, 23:00:00, 22:56:00, -0.5900) pd.read_csv(StringIO(tmp),headerNone,parse_dates[[1,2],[1,3]]) out: 1_21_304 01999-01-27 19:00:001999-01-27 18:56:00KORD0.81 11999-01-27 20:00:001999-01-27 19:56:00KORD0.01 21999-01-27 21:00:001999-01-27 20:56:00KORD-0.59 31999-01-27 21:00:001999-01-27 21:18:00KORD-0.99 41999-01-27 22:00:001999-01-27 21:56:00KORD-0.59 51999-01-27 23:00:001999-01-27 22:56:00KORD-0.59 默认情况下解析器会删除组件日期列可以选择通过keep_date_col关键字保留它们 pd.read_csv(StringIO(tmp),headerNone,parse_dates[[1,2],[1,3]],keep_date_colTrue) out: 1_21_301234 01999-01-27 19:00:001999-01-27 18:56:00KORD1999012719:00:0018:56:000.81 11999-01-27 20:00:001999-01-27 19:56:00KORD1999012720:00:0019:56:000.01 21999-01-27 21:00:001999-01-27 20:56:00KORD1999012721:00:0020:56:00-0.59 31999-01-27 21:00:001999-01-27 21:18:00KORD1999012721:00:0021:18:00-0.99 41999-01-27 22:00:001999-01-27 21:56:00KORD1999012722:00:0021:56:00-0.59 51999-01-27 23:00:001999-01-27 22:56:00KORD1999012723:00:0022:56:00-0.59 请注意如果您希望将多个列合并为一个日期列则必须使用嵌套列表。 换句话说parse_dates [12]表示第二和第三列应分别解析为单独的日期列而parse_dates [[12]]意味着应将这两列解析为单个列。 还可以使用字典来指定自定义名称列 date_spec {nominal:[1,2],actual:[1,3]} pd.read_csv(StringIO(tmp),headerNone,parse_datesdate_spec) out: nominalactual04 01999-01-27 19:00:001999-01-27 18:56:00KORD0.81 11999-01-27 20:00:001999-01-27 19:56:00KORD0.01 21999-01-27 21:00:001999-01-27 20:56:00KORD-0.59 31999-01-27 21:00:001999-01-27 21:18:00KORD-0.99 41999-01-27 22:00:001999-01-27 21:56:00KORD-0.59 51999-01-27 23:00:001999-01-27 22:56:00KORD-0.59 重要的是要记住如果要将多个文本列解析为单个日期列则在数据前添加一个新列。 index_col参数基于这组新列而不是原始数据列 pd.read_csv(StringIO(tmp),headerNone,parse_datesdate_spec,index_col0) out: actual04 nominal 1999-01-27 19:00:001999-01-27 18:56:00KORD0.81 1999-01-27 20:00:001999-01-27 19:56:00KORD0.01 1999-01-27 21:00:001999-01-27 20:56:00KORD-0.59 1999-01-27 21:00:001999-01-27 21:18:00KORD-0.99 1999-01-27 22:00:001999-01-27 21:56:00KORD-0.59 1999-01-27 23:00:001999-01-27 22:56:00KORD-0.59 注意如果列或索引包含不可解析的日期则整个列或索引将作为对象数据类型原样返回。 对于非标准日期时间解析请在pd.read_csv之后使用to_datetime。 注意read_csv具有用于解析iso8601格式的日期时间字符串的fast_path例如“ 2000-01-01T000102 0000”和类似的变体。 如果可以安排数据以这种格式存储日期时间则加载时间将明显缩短约20倍。 Date Parsing Functions 最后解析器允许您指定自定义date_parser函数以充分利用日期解析API的灵活性 pd.read_csv(StringIO(tmp),headerNone,parse_datesdate_spec, date_parserpd.io.date_converters.parse_date_time) out: nominalactual04 01999-01-27 19:00:001999-01-27 18:56:00KORD0.81 11999-01-27 20:00:001999-01-27 19:56:00KORD0.01 21999-01-27 21:00:001999-01-27 20:56:00KORD-0.59 31999-01-27 21:00:001999-01-27 21:18:00KORD-0.99 41999-01-27 22:00:001999-01-27 21:56:00KORD-0.59 51999-01-27 23:00:001999-01-27 22:56:00KORD-0.59 Parsing A Csv with Mixed Timezones Pandas不能原生表示具有混合时区的列或索引。 如果CSV文件包含带有时区混合的列则默认结果将是带有字符串的object-dtype列即使包含parse_dates。 content (a\n 2000-01-01T00:00:0005:00\n 2000-01-01T00:00:0006:00\n) pd.read_csv(StringIO(content),parse_dates[a]) out: a 02000-01-01 00:00:0005:00 12000-01-01 00:00:0006:00 要将混合时区值解析为datetime列请将部分应用的to_datetime传递给utc True作为date_parser。 pd.read_csv(StringIO(content),parse_dates[a], date_parserlambda col:pd.to_datetime(col,utcTrue)) out: a 01999-12-31 19:00:0000:00 11999-12-31 18:00:0000:00 ​
http://www.pierceye.com/news/21643/

相关文章:

  • 大连网站建设网站建设自适应网站建设专家
  • 廊坊制作网站公司网站建设柒首先金手指1
  • wordpress网站响应时间湘潭做网站 i磐石网络
  • dw 如何做自适应网站东莞短视频推广属于什么
  • 知道域名怎么进入网站假视频网站源码出售
  • 网站推广大概需要多少钱28网站建设
  • 泉州网站制作报价网易云wordpress代码
  • 网站明链怎么做找人做网站流程
  • 红酒网站设计vs网站制作教程
  • 邯郸网站建设最新报价泰州网站制作案例
  • 福州网站制作维护网站维护入门教程
  • 网站建设公司需要交税么网站连通率
  • 网站开发是做什么做一款app需要什么技术
  • 潍坊做网站的企业网站论坛怎么做
  • 如何上传网页到网站建站网站和维护需要会什么
  • 网站商城运营成本试百客 专业做试用的网站
  • 网站域名怎么免费获取自己电脑做服务器上传网站 需要备案吗
  • 手机网站优化怎么做同时在线上万人的网站需要什么配置云服务器
  • 门户网站建设的请示江西事件最新消息新闻
  • 企业营销型网站制作多少钱商丘网站建设推广公司
  • 一个虚拟主机如何做多个网站电子商务发展的前景
  • 做网站公司合同重庆市建设工程信息网安全员c证电子版下载
  • 吉林省建设安全厅官方网站wordpress做link
  • 广州市公需课在哪个网站可以做福州做网站的公司有哪些
  • 制作手机网站哪家好义乌外贸网站建设行吗
  • 常见的英文网站网站怎么留住用户
  • wordpress搜索页分类seo实战密码第三版pdf
  • icp备案的网站名称北京二级建造师查询系统
  • 求网页设计与网站建设做网站最好的网络公司
  • 网站设置屏蔽广告网站设计公司 宁波