P1


一、Pandas 简介

  1. pandas 或 Python Data Analysis Library 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

  2. pandas 的一个简单使用(如使用pandas 读入一个excel 工作表)

import numpy as np
import pandas as pd

pf = pd.read_excel(r'C:\Users\YANG\Desktop\joyful-pandas-master\data\table.xlsx')
print(pf.head())  # 输出工作表的首 5 行

'''
  School Class    ID Gender   Address  Height  Weight  Math Physics
0    S_1   C_1  1101      M  street_1     173      63  34.0      A+
1    S_1   C_1  1102      F  street_2     192      73  32.5      B+
2    S_1   C_1  1103      M  street_2     186      82  87.2      B+
3    S_1   C_1  1104      F  street_2     167      81  80.4      B-
4    S_1   C_1  1105      F  street_4     159      64  84.8      B+
'''

二、基本数据结构

  1. Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。

1)创建一个 Series

Series 就如同列表一样,一系列数据,每个数据对应一个索引值。像是“竖起来”的 list

s = pd.Series([1, 2, 3])
print(s)

'''
0    1
1    2
2    3
dtype: int64
'''

2) Series 的属性

以下两个属性依次可以显示 Series 对象的数据值和索引:

print(s.values)
# [1 2 3]

print(s.index)
# RangeIndex(start=0, stop=3, step=1)

列表的索引只能是从 0 开始的整数,Series 数据类型在默认情况下,其索引也是如此。不过,区别于列表的是,Series 可以自定义索引

s = pd.Series([1, 2, 3], index=list('abc'))
print(s)
'''
a    1
b    2
c    3
dtype: int64
'''

访问某个元素

print(s['a'])  # 1
  1. DataFrame: 是一种二维的数据结构,非常接近于电子表格或者类似 mysql 数据库的形式。它的竖行称之为 columns,横行跟前面的 Series 一样,称之为 index,也就是说可以通过 columns 和 index 来确定一个主句的位置

1) 创建一个DataFrame

定义一个 DataFrame 对象的常用方法——使用 dict 定义。

df = pd.DataFrame({'col1':list('abcde'), 'col2':range(5, 10), 'col3':[1.3,2.5,3.6,4.6,5.8]})

'''
  col1  col2  col3
0    a     5   1.3
1    b     6   2.5
2    c     7   3.6
3    d     8   4.6
4    e     9   5.8
'''

字典的“键”(‘col1’,‘col2’,‘col3’)就是 DataFrame 的 columns 的值(名称),字典中每个“键”的“值”是一个列表,它们就是那一竖列中的具体填充数据。上面的定义中没有确定索引,所以,按照惯例(Series 中已经形成的惯例)就是从 0 开始的整数。从上面的结果中很明显表示出来,这就是一个二维的数据结构。(columns 的顺序没有规定,就如同字典中键的顺序一样,但是在 DataFrame 中,columns 有一个明显不同,就是它的顺序是可以被规定)

2) DataFrame 的属性

① 从DataFrame取出一列为Series

print(type(df['col1']))  # <class 'pandas.core.series.Series'>
print(df['col1'])  # 取出第一列
'''
0    a
1    b
2    c
3    d
4    e
Name: col1, dtype: object
'''

② 其它

print(df.index)  # RangeIndex(start=0, stop=5, step=1)
print(df.columns)  # Index(['col1', 'col2', 'col3'], dtype='object')
print(df.shape)  # (5, 3) 
print(df.values)

'''
[['a' 5 1.3]
 ['b' 6 2.5]
 ['c' 7 3.6]
 ['d' 8 4.6]
 ['e' 9 5.8]]
'''

嗯?:
① df.rename() 支持修改 列名与索引(即行名),若不对 inplace 参数进行设置,则返回一个新的变量;若设置 inplace=True 后会直接在原 DataFrame 中改动
②列的删除:drop 方法、del 方法与 df.rename()类似,而 pop方法直接在原来的DataFrame上操作,但且返回被删除的列
③列的添加:可使用assign方法,如 df[‘B’]=list(‘abc’) 但若索引(行名)曾被修改过,则添加后的该Series不具索引性,添加的元素由索引对齐特性直接显示为 NaN,assign方法会生成一个新变量
④ Series 可转换为 DataFrame,若 Series 中不设置 name,则转过来的 DataFrame 中的列名 默认从 0 开始
⑤ Series 中的mean函数与 DataFrame 中的mean函数 太不一样


三、题题题…

  1. Series和DataFrame有哪些常见属性和方法?
    答: 常见的属性就是 值,索引,类型,列名,行名
    方法:可多了

  2. value_counts会统计缺失值吗?
    答: value_counts默认不统计缺失值,设置参数dropna=False时会统计缺失值

  3. 如果有多个索引同时取到最大值,idxmax会返回所有这些索引吗?如果不会,那么怎么返回这些索引?
    答:只会返回第一个最大值的索引,若要返回多个最大值的索引,可以利用找到的第一个最大值的索引,先读取该最大值,再利用最大值反过来找索引

  4. df.mean(axis=1)是什么意思?它与df.mean()的结果一样吗?问题四提到的函数也有axis参数吗?怎么使用?
    答:不一样,df.mean() 默认参数axis=0 计算的是列的平均值,而 df.mean(axis=1) 计算的行的平均值

  5. 对值进行排序后,相同的值次序由什么决定?
    答 :若设置了两个值排序参数,则有由第二个参数觉得;若无,则有索引决定

  6. Pandas中为各类基础运算也定义了函数,比如s1.add(s2)表示两个Series相加,但既然已经有了’+’,是不是多此一举?
    答: 你开心就好

  7. 如果DataFrame某一列的元素是numpy数组,那么将其保存到csv在读取后就会变成字符串,怎么解决?
    答:使用强制类型转换 如 astyp()

【练习一】现有一份关于美剧《权力的游戏》剧本的数据集,请解决以下问题:
(a)在所有的数据中,一共出现了多少人物?

答:564个, 利用名字的唯一值统计人物个数

pf = pd.read_csv(r'C:\Users\YANG\Desktop\joyful-pandas-master\data\Game_of_Thrones_Script.csv')
print(pf['Name'].nunique())  # 564

剩下的,皆不会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值