Note
可以把 pandas 看作是打了兴奋剂的 Excel!💪
数据分析是对数据进行检查、清理、转换和建模的过程,目的是发现有用信息、得出结论并支持决策。它涉及几个关键步骤:
机器学习是人工智能 (AI) 的一个子领域,专注于使计算机能够从数据中学习,而无需显式编程。关键概念包括:
Python 是一种通用的高级编程语言,以其可读性和广泛的库而闻名。数据分析的关键特性:
pd
导入 pandas(标准惯例)。np
。 pandas 构建在 NumPy 之上。<NumpyExtensionArray>
[np.int64(4), np.int64(7), np.int64(-5), np.int64(3)]
Length: 4, dtype: int64
RangeIndex(start=0, stop=4, step=1)
Note
obj.array
返回数据。 obj.index
返回索引。
Note
现在索引是 [‘d’, ‘b’, ‘a’, ‘c’]。我们可以使用这些索引来访问数据。
Note
我们可以使用索引标签列表来选择子集。
Note
在这些操作期间,索引-值的链接关系会保留。
Note
Series 类似于字典:键是索引标签,值是数据。
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index=states) # 使用指定的索引创建一个 Series
obj4
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
Note
‘California’ 是 NaN(Not a Number)- 它在索引中,但不在 sdata
中。‘Utah’ 被排除 - 它在 sdata
中,但不在索引中。
California False
Ohio True
Oregon True
Texas True
dtype: bool
Note
isna()
和 notna()
检测缺失值。
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64
Note
数据对齐是自动的。在标签不匹配的地方引入 NaN。
name
属性state
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
Name: population, dtype: float64
Note
Series 及其索引可以有名称。
Note
可以通过赋值更改索引。
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data) # 从字典(值为列表)创建一个 DataFrame
frame
state | year | pop | |
---|---|---|---|
0 | Ohio | 2000 | 1.5 |
1 | Ohio | 2001 | 1.7 |
2 | Ohio | 2002 | 3.6 |
3 | Nevada | 2001 | 2.4 |
4 | Nevada | 2002 | 2.9 |
5 | Nevada | 2003 | 3.2 |
Note
创建 DataFrame 的常用方法:字典,其值为列表。
head()
和 tail()
head()
和 tail()
(续)year | state | pop | |
---|---|---|---|
0 | 2000 | Ohio | 1.5 |
1 | 2001 | Ohio | 1.7 |
2 | 2002 | Ohio | 3.6 |
3 | 2001 | Nevada | 2.4 |
4 | 2002 | Nevada | 2.9 |
5 | 2003 | Nevada | 3.2 |
Note
可以指定列的顺序。
Note
‘debt’ 列有缺失值 (NaN),因为它不在原始数据中。
0 2000
1 2001
2 2002
3 2001
4 2002
5 2003
Name: year, dtype: int64
Note
两种方法都返回一个 Series。属性访问仅适用于有效的 Python 变量名(无空格等)。
Note
loc
基于标签。iloc
基于整数位置。这是至关重要的区别。
val = pd.Series([-1.2, -1.5, -1.7], index=[2, 4, 5]) # 创建带有自定义索引的 Series
frame2['debt'] = val # 将 Series 赋给 'debt' 列
frame2
year | state | pop | debt | |
---|---|---|---|---|
0 | 2000 | Ohio | 1.5 | NaN |
1 | 2001 | Ohio | 1.7 | NaN |
2 | 2002 | Ohio | 3.6 | -1.2 |
3 | 2001 | Nevada | 2.4 | NaN |
4 | 2002 | Nevada | 2.9 | -1.5 |
5 | 2003 | Nevada | 3.2 | -1.7 |
Note
标签已对齐!val
中的值被分配给 frame2
中相应的索引。在索引不匹配的地方填充缺失值 (NaN)。
year | state | pop | debt | eastern | |
---|---|---|---|---|---|
0 | 2000 | Ohio | 1.5 | NaN | True |
1 | 2001 | Ohio | 1.7 | NaN | True |
2 | 2002 | Ohio | 3.6 | -1.2 | True |
3 | 2001 | Nevada | 2.4 | NaN | False |
4 | 2002 | Nevada | 2.9 | -1.5 | False |
5 | 2003 | Nevada | 3.2 | -1.7 | False |
Note
赋值给不存在的列会创建一个新列。
Index(['year', 'state', 'pop', 'debt'], dtype='object')
Note
del
关键字删除列。
populations = {'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6},
'Nevada': {2001: 2.4, 2002: 2.9}}
frame3 = pd.DataFrame(populations) # 从嵌套字典创建 DataFrame
frame3
Ohio | Nevada | |
---|---|---|
2000 | 1.5 | NaN |
2001 | 1.7 | 2.4 |
2002 | 3.6 | 2.9 |
Note
外层键成为列,内层键成为行索引。
Note
交换行和列。
index.name
和 columns.name
to_numpy()
Note
将数据作为二维 NumPy 数组返回。如果存在混合类型,dtype
将适应所有列,通常为 object
。
Note
索引对象存储轴标签和元数据。它们是不可变的。
Note
索引对象在创建后不能更改。
reindex
创建一个新对象;数据会根据新索引进行调整。a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
Note
reindex
创建新的 Series。为缺失的索引引入 NaN。
method
method
(续)0 blue
1 blue
2 purple
3 purple
4 yellow
5 yellow
dtype: object
Note
ffill
(前向填充)将最后一个有效值向前传播。
Ohio | Texas | California | |
---|---|---|---|
a | 0.0 | 1.0 | 2.0 |
b | NaN | NaN | NaN |
c | 3.0 | 4.0 | 5.0 |
d | 6.0 | 7.0 | 8.0 |
Note
DataFrame 上的 reindex
可以更改行索引、列或两者。
loc
和 iloc
进行索引loc
:按标签选择。iloc
:按整数位置选择。loc
和 iloc
进行索引(续)loc
和 iloc
进行索引(续)loc
和 iloc
进行索引(续)loc
和 iloc
进行索引 (续)loc
和 iloc
进行索引 (续)Note
使用 loc
和 iloc
可以避免歧义,尤其是在使用整数索引时。
Note
使用 loc
进行标签切片包括端点。
loc
和 iloc
在 DataFrame 上进行选择loc
和 iloc
在 DataFrame 上进行选择 (续)loc
和 iloc
在 DataFrame 上进行选择 (续)loc
和 iloc
在 DataFrame 上进行选择 (续)loc
和 iloc
在 DataFrame 上进行选择 (续)loc
和 iloc
在 DataFrame 上进行选择 (续)loc
和 iloc
在 DataFrame 上进行选择 (续)a | b | c | d | e | |
---|---|---|---|---|---|
0 | 0.0 | 2.0 | 4.0 | 6.0 | NaN |
1 | 9.0 | NaN | 13.0 | 15.0 | NaN |
2 | 18.0 | 20.0 | 22.0 | 24.0 | NaN |
3 | NaN | NaN | NaN | NaN | NaN |
Note
NaN 表示缺失值。
add
和 fill_value
a | b | c | d | e | |
---|---|---|---|---|---|
0 | 0.0 | 2.0 | 4.0 | 6.0 | 4.0 |
1 | 9.0 | 5.0 | 13.0 | 15.0 | 9.0 |
2 | 18.0 | 20.0 | 22.0 | 24.0 | 14.0 |
3 | 15.0 | 16.0 | 17.0 | 18.0 | 19.0 |
Note
fill_value
在运算之前替换缺失值。
方法 | 描述 |
---|---|
add, radd |
加法 (+) |
sub, rsub |
减法 (-) |
div, rdiv |
除法 (/) |
mul, rmul |
乘法 (*) |
Note
r
方法:反转参数(例如,1 / df1
等价于 df1.rdiv(1)
)。
b | d | e | |
---|---|---|---|
Utah | 0.0 | 0.0 | 0.0 |
Ohio | 3.0 | 3.0 | 3.0 |
Texas | 6.0 | 6.0 | 6.0 |
Oregon | 9.0 | 9.0 | 9.0 |
Note
DataFrame 和 Series 之间的算术运算默认沿行广播。
b | d | e | |
---|---|---|---|
Utah | -1.0 | 0.0 | 1.0 |
Ohio | -1.0 | 0.0 | 1.0 |
Texas | -1.0 | 0.0 | 1.0 |
Oregon | -1.0 | 0.0 | 1.0 |
Note
axis='index'
(或 axis=0
)跨列广播。
apply
应用函数apply
应用函数 (续)applymap
进行逐元素格式化b | d | e | |
---|---|---|---|
Utah | 0.34 | 0.13 | -1.52 |
Ohio | -0.37 | 0.16 | 0.76 |
Texas | 1.09 | 0.77 | 0.77 |
Oregon | -0.33 | -0.45 | -0.82 |
Note
applymap
用于 DataFrame 的逐元素操作;map
用于 Series 的逐元素操作。
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64
Note
排名:分配从 1 到有效数据点数量的排名。
方法 | 描述 |
---|---|
average |
默认:平局使用平均排名 |
min |
使用最小排名 |
max |
使用最大排名 |
first |
按值出现的顺序排名 |
方法 | 描述 |
---|---|
axis |
轴 (‘index’ 表示行, ‘columns’ 表示列) |
skipna |
排除缺失值 (默认为 True) |
describe()
方法describe()
方法 (续)方法 | 描述 |
---|---|
count |
非 NA 值的数量 |
describe |
计算一组汇总统计 |
min, max |
计算最小值和最大值 |
idxmin, idxmax |
计算达到最小值/最大值的索引标签 |
quantile |
计算样本分位数 (0 到 1) |
sum |
求和 |
mean |
平均值 |
median |
中位数 (50% 分位数) |
… | … |
首先加载数据
AAPL | GOOG | IBM | MSFT | |
---|---|---|---|---|
Date | ||||
2016-10-17 | -0.000680 | 0.001837 | 0.002072 | -0.003483 |
2016-10-18 | -0.000681 | 0.019616 | -0.026168 | 0.007690 |
2016-10-19 | -0.002979 | 0.007846 | 0.003583 | -0.002255 |
2016-10-20 | -0.000512 | -0.005652 | 0.001719 | -0.004867 |
2016-10-21 | -0.003930 | 0.003011 | -0.012474 | 0.042096 |
Note
corr
:相关性。cov
:协方差。
corr
和 cov
corr
和 cov
on DataFrame (续)corrwith
方法corrwith
方法 (续)AAPL -0.075565
GOOG -0.007067
IBM -0.204849
MSFT -0.092950
dtype: float64
Note
计算成对相关性。
isin
方法isin
方法(续)isin
方法 (续)Note
isin
:检查成员资格。
返回目录 |📧 hfutqiufei@163.com