: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

【Pandas 教程系列】- Pandas CSV 文件

【Pandas 教程系列】- Pandas CSV 文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

Pandas 可以很方便的处理 CSV 文件,本文以 nba.csv 为例,你可以下载 nba.csv 或打开 nba.csv 查看。地址:https://static.jyshare.com/download/nba.csv.txthttps://static.jyshare.com/download/nba.csv

实例
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.to_string())
复制代码
to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。

实例
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df)
复制代码
输出结果为:



我们也可以使用 to_csv() 方法将 DataFrame 存储为 csv 文件:

实例
  1. import pandas as pd
  2.    
  3. # 三个字段 name, site, age
  4. nme = ["Google", "Runoob", "Taobao", "Wiki"]
  5. st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
  6. ag = [90, 40, 80, 98]
  7.    
  8. # 字典
  9. dict = {'name': nme, 'site': st, 'age': ag}
  10.      
  11. df = pd.DataFrame(dict)

  12. # 保存 dataframe
  13. df.to_csv('site.csv')
复制代码
执行成功后,我们打开 site.csv 文件,显示结果如下:



数据处理

head()

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

实例 - 读取前面 5 行
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.head())
复制代码
输出结果为:
  1.             Name            Team  Number Position   Age Height  Weight            College     Salary
  2. 0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas  7730337.0
  3. 1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette  6796117.0
  4. 2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University        NaN
  5. 3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State  1148640.0
  6. 4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN  5000000.0
复制代码
实例 - 读取前面 10 行
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.head(10))
复制代码
输出结果为:
  1.             Name            Team  Number Position   Age Height  Weight            College      Salary
  2. 0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas   7730337.0
  3. 1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette   6796117.0
  4. 2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University         NaN
  5. 3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State   1148640.0
  6. 4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN   5000000.0
  7. 5   Amir Johnson  Boston Celtics    90.0       PF  29.0    6-9   240.0                NaN  12000000.0
  8. 6  Jordan Mickey  Boston Celtics    55.0       PF  21.0    6-8   235.0                LSU   1170960.0
  9. 7   Kelly Olynyk  Boston Celtics    41.0        C  25.0    7-0   238.0            Gonzaga   2165160.0
  10. 8   Terry Rozier  Boston Celtics    12.0       PG  22.0    6-2   190.0         Louisville   1824360.0
  11. 9   Marcus Smart  Boston Celtics    36.0       PG  22.0    6-4   220.0     Oklahoma State   3431040.0
复制代码
tail()

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。

实例 - 读取末尾 5 行
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.tail())
复制代码
输出结果为:
  1.              Name       Team  Number Position   Age Height  Weight College     Salary
  2. 453  Shelvin Mack  Utah Jazz     8.0       PG  26.0    6-3   203.0  Butler  2433333.0
  3. 454     Raul Neto  Utah Jazz    25.0       PG  24.0    6-1   179.0     NaN   900000.0
  4. 455  Tibor Pleiss  Utah Jazz    21.0        C  26.0    7-3   256.0     NaN  2900000.0
  5. 456   Jeff Withey  Utah Jazz    24.0        C  26.0    7-0   231.0  Kansas   947276.0
  6. 457           NaN        NaN     NaN      NaN   NaN    NaN     NaN     NaN        NaN
复制代码
实例 - 读取末尾 10 行
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.tail(10))
复制代码
输出结果为:
  1.                Name       Team  Number Position   Age Height  Weight   College      Salary
  2. 448  Gordon Hayward  Utah Jazz    20.0       SF  26.0    6-8   226.0    Butler  15409570.0
  3. 449     Rodney Hood  Utah Jazz     5.0       SG  23.0    6-8   206.0      Duke   1348440.0
  4. 450      Joe Ingles  Utah Jazz     2.0       SF  28.0    6-8   226.0       NaN   2050000.0
  5. 451   Chris Johnson  Utah Jazz    23.0       SF  26.0    6-6   206.0    Dayton    981348.0
  6. 452      Trey Lyles  Utah Jazz    41.0       PF  20.0   6-10   234.0  Kentucky   2239800.0
  7. 453    Shelvin Mack  Utah Jazz     8.0       PG  26.0    6-3   203.0    Butler   2433333.0
  8. 454       Raul Neto  Utah Jazz    25.0       PG  24.0    6-1   179.0       NaN    900000.0
  9. 455    Tibor Pleiss  Utah Jazz    21.0        C  26.0    7-3   256.0       NaN   2900000.0
  10. 456     Jeff Withey  Utah Jazz    24.0        C  26.0    7-0   231.0    Kansas    947276.0
  11. 457             NaN        NaN     NaN      NaN   NaN    NaN     NaN       NaN         NaN
复制代码
info()

info() 方法返回表格的一些基本信息:

实例
  1. import pandas as pd

  2. df = pd.read_csv('nba.csv')

  3. print(df.info())
复制代码
输出结果为:
  1. <class 'pandas.core.frame.DataFrame'>
  2. RangeIndex: 458 entries, 0 to 457          # 行数,458 行,第一行编号为 0
  3. Data columns (total 9 columns):            # 列数,9列
  4. #   Column    Non-Null Count  Dtype       # 各列的数据类型
  5. ---  ------    --------------  -----  
  6. 0   Name      457 non-null    object
  7. 1   Team      457 non-null    object
  8. 2   Number    457 non-null    float64
  9. 3   Position  457 non-null    object
  10. 4   Age       457 non-null    float64
  11. 5   Height    457 non-null    object
  12. 6   Weight    457 non-null    float64
  13. 7   College   373 non-null    object         # non-null,意思为非空的数据   
  14. 8   Salary    446 non-null    float64
  15. dtypes: float64(4), object(5)                 # 类型
复制代码
non-null 为非空数据,我们可以看到上面的信息中,总共 458 行,College 字段的空值最多。

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表