python_pandas_(2)


排序

In [9]: df.sort_values(['数学','语文']).head()     #  先按数学成绩进行排序,若数学成绩相同,则按语文成绩排序

Out[9]:

 序号姓名性别语文数学英语物理化学生物
23yue906687787386
01jin956685757989
56chen786958529262
45mu558695727679
12li888768928263

访问

In [10]:# 按照索引去定位

           df.loc[1]

Out[10]:

序号       2
姓名      li
性别       男
语文      88
数学      87
英语      68
物理      92
化学      82
生物      63
Name: 1, dtype: object

索引

In [11]:scores = {

    '英语':[97,84,68],
    '数学':[65,78,56],
    '姓名':['wang','jin','li']

}

             df = pd.DataFrame(scores, index=['one','two','three'])
             df

Out[11]:

 姓名数学英语
onewang6597
twojin7884
threeli5668

 

In [12]:df.index

Out [12]:Index(['one', 'two', 'three'], dtype='object')

In [13]: # 此时不存在数字索引,所以不能通过数字索引去访问
            # df.loc[1]
            df.loc['one']

Out[13]:

姓名    wang
数学      65
英语      97
Name: one, dtype: object

In [14]:# 实实在在的所谓的第几行

            df.iloc[0]

Out[14]:

姓名    wang
数学      65
英语      97
Name: one, dtype: object

In [15]:# 访问某一行,下面写法错误
           # df[0]

          #访问多行数据是可以使用切片的
          df[:2]

Out[15]:

 序号姓名性别语文数学英语物理化学生物
01jin956685757989
12li888768928263

 

In [16]:df.values
Out[16]:array([[1, '  jin', '  女', 95, 66, 85, 75, 79, 89],
       [2, '  li', '   男', 88, 87, 68, 92, 82, 63],
       [3, '  yue', '  女', 90, 66, 87, 78, 73, 86],
       [4, '  wang', ' 女', 82, 97, 78, 96, 92, 53],
       [5, '  mu', '   女', 55, 86, 95, 72, 76, 79],
       [6, '  chen', ' 男', 78, 69, 58, 52, 92, 62]], dtype=object)

In [17]:# dataframe中的数组
        df.数学.values
Out[17]:array([66, 87, 66, 97, 86, 69], dtype=int6

In [18]:# 简单的统计
        df.数学.value_counts()  #数学分值有多少人
Out[18]:
66    2
87    1
86    1
69    1
97    1
Name: 数学, dtype: int64

# 提取多列

In [19]:new = df[['数学','语文']].head()

             new

 数学语文
06695
18788
26690
39782
48655

重点

In [20]:def func(scores):
                  if scores >= 80:
                          return '优秀'
                  elif scores >= 70:
                          return '良'
                  elif scores >= 60:
                          return '及格'
                  else:
                          return '不及格'

            df['数学分类'] = df.数学.map(func)

In [21]:df

Out[21]:

   序号姓名性别语文数学英语物理化学生物数学分类
01jin957685757989
12li888768928263优秀
23yue906687787386及格
34wang829778969253优秀
45mu558695727679优秀
56chen786958529262及格

In [22]:# applymap 对dataframe中所有的数据进行操作的一个函数,非常重要
           def func(number):
                   return number+10
           # 等价
          func = lambda number: number+10

         df.applymap(lambda x: str(x) + '-')

 序号姓名性别语文数学英语物理化学生物数学分类
01-jin-女-95-76-85-75-79-89-良-
12-li-男-88-87-68-92-82-63-优秀-
23-yue-女-90-66-87-78-73-86-及格-
34-wang-女-82-97-78-96-92-53-优秀-
45-mu-女-55-86-95-72-76-79-优秀-
56-chen-男-78-69-58-52-92-62-及格-

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值