初识 - Pandas

Pandas 作为流行的数据分析处理库,使用非常简洁方便。

1. 读取 csv 文件

Pandas 可以非常方便地读取 csv 文件:

>> import pandas as pd
>> df = pd.read_csv('data.csv', encoding='gbk')
>> df.head()

读取结果:

df.head 默认显示前 5 行,可以指定参数来读取前 n 行。30 clolumns 指出该数据集共有 30 个特征。

2.查看数据集的基本信息

>> df.info()

输出结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 30 columns):
 #   Column                               Non-Null Count  Dtype  
---  ------                               --------------  -----  
 0   股票代码                                 32 non-null     object 
 1   股票简称                                 32 non-null     object 
 2   现价(元)                                32 non-null     float64
 3   涨跌幅(%)                               32 non-null     float64
 4   分红比例(%)2020.12.31                    32 non-null     float64
 5   分红比例(%)2019.12.31                    32 non-null     float64
 6   分红比例(%)2018.12.31                    32 non-null     float64
 7   分红比例(%)2017.12.31                    32 non-null     float64
 8   分红比例(%)2016.12.31                    32 non-null     float64
 9   加权净资产收益率(%)2020.12.31                32 non-null     float64
 10  加权净资产收益率(%)2019.12.31                32 non-null     float64
 11  加权净资产收益率(%)2018.12.31                32 non-null     float64
 12  加权净资产收益率(%)2017.12.31                32 non-null     float64
 13  加权净资产收益率(%)2016.12.31                32 non-null     float64
 14  净利润现金含量占比平均(%)2016.12.31-2020.12.31  32 non-null     float64
 15  净利润现金含量占比(%)2019.12.31               32 non-null     float64
 16  净利润现金含量占比(%)2018.12.31               32 non-null     float64
 17  净利润现金含量占比(%)2017.12.31               32 non-null     float64
 18  净利润现金含量占比(%)2016.12.31               32 non-null     float64
 19  净利润现金含量占比(%)2020.12.31               32 non-null     float64
 20  资产负债率(%)2020.12.31                   32 non-null     float64
 21  资产负债率(%)2019.12.31                   32 non-null     float64
 22  资产负债率(%)2018.12.31                   32 non-null     float64
 23  资产负债率(%)2017.12.31                   32 non-null     float64
 24  资产负债率(%)2016.12.31                   32 non-null     float64
 25  销售毛利率(%)2020.12.31                   32 non-null     float64
 26  销售毛利率(%)2019.12.31                   32 non-null     float64
 27  销售毛利率(%)2018.12.31                   32 non-null     float64
 28  销售毛利率(%)2017.12.31                   32 non-null     float64
 29  销售毛利率(%)2016.12.31                   32 non-null     float64
dtypes: float64(28), object(2)
memory usage: 7.6+ KB

df.info 可以帮助我们清晰地了解读取的数据集的基本情况,包括数据集索引的数量和范围、特征的数量和具体特征以及每个特征列包含的非空记录的个数、数据类型等等。

注:df.info() 的第一行信息也清晰地为我们揭示了读取的 csv 文件在 pandas 内部的表示形式 - DataFrameDataFrame 是 pandas 中最核心的数据结构,提供了非常多实用的 API 。

也可以使用 df.index 单独查看索引的情况:

>> df.index
RangeIndex(start=0, stop=32, step=1)

使用 df.columns 查看列名(特征):

>> df.columns
Index(['股票代码', '股票简称', '现价(元)', '涨跌幅(%)', '分红比例(%)2020.12.31',
       '分红比例(%)2019.12.31', '分红比例(%)2018.12.31', '分红比例(%)2017.12.31',
       '分红比例(%)2016.12.31', '加权净资产收益率(%)2020.12.31', '加权净资产收益率(%)2019.12.31',
       '加权净资产收益率(%)2018.12.31', '加权净资产收益率(%)2017.12.31',
       '加权净资产收益率(%)2016.12.31', '净利润现金含量占比平均(%)2016.12.31-2020.12.31',
       '净利润现金含量占比(%)2019.12.31', '净利润现金含量占比(%)2018.12.31',
       '净利润现金含量占比(%)2017.12.31', '净利润现金含量占比(%)2016.12.31',
       '净利润现金含量占比(%)2020.12.31', '资产负债率(%)2020.12.31', '资产负债率(%)2019.12.31',
       '资产负债率(%)2018.12.31', '资产负债率(%)2017.12.31', '资产负债率(%)2016.12.31',
       '销售毛利率(%)2020.12.31', '销售毛利率(%)2019.12.31', '销售毛利率(%)2018.12.31',
       '销售毛利率(%)2017.12.31', '销售毛利率(%)2016.12.31'],
      dtype='object')

使用 df.dtypes 查看数据类型:

>> df.dtypes
股票代码                                    object
股票简称                                    object
现价(元)                                  float64
涨跌幅(%)                                 float64
分红比例(%)2020.12.31                      float64
分红比例(%)2019.12.31                      float64
分红比例(%)2018.12.31                      float64
分红比例(%)2017.12.31                      float64
分红比例(%)2016.12.31                      float64
加权净资产收益率(%)2020.12.31                  float64
加权净资产收益率(%)2019.12.31                  float64
加权净资产收益率(%)2018.12.31                  float64
加权净资产收益率(%)2017.12.31                  float64
加权净资产收益率(%)2016.12.31                  float64
净利润现金含量占比平均(%)2016.12.31-2020.12.31    float64
净利润现金含量占比(%)2019.12.31                 float64
净利润现金含量占比(%)2018.12.31                 float64
净利润现金含量占比(%)2017.12.31                 float64
净利润现金含量占比(%)2016.12.31                 float64
净利润现金含量占比(%)2020.12.31                 float64
资产负债率(%)2020.12.31                     float64
资产负债率(%)2019.12.31                     float64
资产负债率(%)2018.12.31                     float64
资产负债率(%)2017.12.31                     float64
资产负债率(%)2016.12.31                     float64
销售毛利率(%)2020.12.31                     float64
销售毛利率(%)2019.12.31                     float64
销售毛利率(%)2018.12.31                     float64
销售毛利率(%)2017.12.31                     float64
销售毛利率(%)2016.12.31                     float64
dtype: object

df.valuesnumpy.ndarray 的形式返回所有的数据:

>> df.values
array([['002690.SZ', '美亚光电', 42.24, -0.89, 123.42, 99.31, 105.65, 92.69,
        65.56, 19.1, 23.61, 20.14, 17.38, 15.78, 101.92, 92.11, 94.54,
        121.13, 107.02, 94.79, 19.7, 13.92, 14.84, 19.91, 12.83, 51.81,
        55.45, 54.94, 53.21, 52.67],
       ['600507.SH', '方大特钢', 9.35, -7.06, 110.81, 41.46, 84.09, 83.55,
        50.19, 28.79, 27.05, 58.17, 67.67, 28.51, 140.16, 101.38, 122.07,
        100.56, 202.07, 174.74, 31.15, 47.03, 29.96, 39.99, 65.46, 22.71,
        24.68, 32.87, 32.03, 19.62],
       ['603866.SH', '桃李面包', 28.7, -0.1, 107.86, 96.24, 102.6, 73.35,
        31.0, 21.98, 19.56, 19.71, 22.36, 22.42, 125.26, 129.92, 125.08,
        127.25, 119.27, 124.75, 14.99, 27.82, 12.51, 10.51, 13.05, 29.97,
        39.57, 39.68, 37.7, 36.13],
       ...,
       ['600690.SH', '海尔智家', 26.64, -2.45, 25.82, 28.83, 28.77, 30.11,
        30.02, 17.67, 19.12, 21.0, 23.59, 20.41, 208.21, 183.79, 255.79,
        241.82, 161.37, 198.26, 66.52, 65.33, 66.93, 69.13, 71.37, 29.68,
        29.83, 29.0, 31.0, 31.02]], dtype=object)

3. 附加

下面,小鱼开始对上述读取的数据集做一个简单的处理,以方便我们后续的使用。

指定新的列索引

原始数据集列索引中的字符串都是中文,为了方便,我们来将它改为英文,注意顺序的一致性哦~

df.columns = ['code', 'abbreviation', 'price', 'change', 
              'dividend2020', 'dividend2019', 'dividend2018', 'dividend2017', 'dividend2016', 
              'roe2020', 'roe2019', 'roe2018', 'roe2017', 'roe2016', 
              'averageCash', 'cash2019', 'cash2018', 'cash2017', 'cash2016', 'cash2020', 
              'assetLiability2020', 'assetLiability2019', 'assetLiability2018', 'assetLiability2017', 
              'assetLiability2016', 'gross2020', 'gross2019', 'gross2018', 'gross2017', 'gross2016']

修改之后就变成下面这样啦~

选取指定的特征

原始数据集的特征也太多了,不便于我们后续的学习,下面,小鱼只挑选部分特征。

df = df[['code', 'price', 'change', 'dividend2020', 'roe2020', 
        'averageCash', 'cash2020', 'assetLiability2020', 'gross2020']]

现在,整个数据集就简单很多啦~

设置行索引

我们知道股票的代码是唯一的,像身份证 ID 一样,即使上市公司的名称发生改变,股票代码也永远不会改变。

df = df.set_index('code')

因此,可以使用 code 列作为 DataFrame 的索引(行索引):

最后,我们将 df 保存成新的 csv 文件,下次使用数据集的时候,直接读取新的 csv 就好啦~

df.to_csv('simple_data.csv')
pd.read_csv('simple_data.csv', index_col='code').tail()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容