In [6]:
Copied!
import pandas as pd
import numpy as np
import pandas as pd
import numpy as np
In [8]:
Copied!
rng = np.random.RandomState(42)
ser = pd.Series(rng.randint(0, 10, 4))
ser
rng = np.random.RandomState(42)
ser = pd.Series(rng.randint(0, 10, 4))
ser
Out[8]:
0 6 1 3 2 7 3 4 dtype: int32
In [10]:
Copied!
df = pd.DataFrame(rng.randint(0, 10, (3, 4)),
columns=['A', 'B', 'C', 'D'])
df
df = pd.DataFrame(rng.randint(0, 10, (3, 4)),
columns=['A', 'B', 'C', 'D'])
df
Out[10]:
| A | B | C | D | |
|---|---|---|---|---|
| 0 | 6 | 9 | 2 | 6 |
| 1 | 7 | 4 | 3 | 7 |
| 2 | 7 | 2 | 5 | 4 |
In [12]:
Copied!
np.exp(ser)
np.exp(ser)
Out[12]:
0 403.428793 1 20.085537 2 1096.633158 3 54.598150 dtype: float64
In [14]:
Copied!
np.sin(df * np.pi / 4)
np.sin(df * np.pi / 4)
Out[14]:
| A | B | C | D | |
|---|---|---|---|---|
| 0 | -1.000000 | 7.071068e-01 | 1.000000 | -1.000000e+00 |
| 1 | -0.707107 | 1.224647e-16 | 0.707107 | -7.071068e-01 |
| 2 | -0.707107 | 1.000000e+00 | -0.707107 | 1.224647e-16 |
Series 计算¶
In [17]:
Copied!
area = pd.Series({'Alaska': 1723337, 'Texas': 695662,
'California': 423967}, name='area')
population = pd.Series({'California': 38332521, 'Texas': 26448193,
'New York': 19651127}, name='population')
area = pd.Series({'Alaska': 1723337, 'Texas': 695662,
'California': 423967}, name='area')
population = pd.Series({'California': 38332521, 'Texas': 26448193,
'New York': 19651127}, name='population')
In [19]:
Copied!
population / area
population / area
Out[19]:
Alaska NaN California 90.413926 New York NaN Texas 38.018740 dtype: float64
In [25]:
Copied!
A = pd.Series([2, 4, 6], index=[0, 1, 2])
B = pd.Series([1, 3, 5], index=[1, 2, 3])
A + B
A = pd.Series([2, 4, 6], index=[0, 1, 2])
B = pd.Series([1, 3, 5], index=[1, 2, 3])
A + B
Out[25]:
0 NaN 1 5.0 2 9.0 3 NaN dtype: float64
In [27]:
Copied!
A.add(B, fill_value=0)
A.add(B, fill_value=0)
Out[27]:
0 2.0 1 5.0 2 9.0 3 5.0 dtype: float64
Pandas DataFrame 数值计算¶
In [30]:
Copied!
A = pd.DataFrame(rng.randint(0, 20, (2, 2)),
columns=list('AB'))
A
A = pd.DataFrame(rng.randint(0, 20, (2, 2)),
columns=list('AB'))
A
Out[30]:
| A | B | |
|---|---|---|
| 0 | 1 | 11 |
| 1 | 5 | 1 |
In [32]:
Copied!
B = pd.DataFrame(rng.randint(0, 10, (3, 3)),
columns=list('BAC'))
B
B = pd.DataFrame(rng.randint(0, 10, (3, 3)),
columns=list('BAC'))
B
Out[32]:
| B | A | C | |
|---|---|---|---|
| 0 | 4 | 0 | 9 |
| 1 | 5 | 8 | 0 |
| 2 | 9 | 2 | 6 |
In [34]:
Copied!
A + B
A + B
Out[34]:
| A | B | C | |
|---|---|---|---|
| 0 | 1.0 | 15.0 | NaN |
| 1 | 13.0 | 6.0 | NaN |
| 2 | NaN | NaN | NaN |
In [36]:
Copied!
fill = A.stack().mean()
A.add(B, fill_value=fill)
fill = A.stack().mean()
A.add(B, fill_value=fill)
Out[36]:
| A | B | C | |
|---|---|---|---|
| 0 | 1.0 | 15.0 | 13.5 |
| 1 | 13.0 | 6.0 | 4.5 |
| 2 | 6.5 | 13.5 | 10.5 |
Python 运算符号 与相应 Pandas 对象的方法
| Python 运算符 | Pandas 对象的方法 |
|---|---|
+ |
add() |
- |
sub(), subtract() |
* |
mul(), multiply() |
/ |
truediv(), div(), divide() |
// |
floordiv() |
% |
mod() |
** |
pow() |
DataFrame 与 Series混合计算¶
In [41]:
Copied!
A = rng.randint(10, size=(3, 4))
A
A = rng.randint(10, size=(3, 4))
A
Out[41]:
array([[3, 8, 2, 4],
[2, 6, 4, 8],
[6, 1, 3, 8]])
In [43]:
Copied!
A - A[0]
A - A[0]
Out[43]:
array([[ 0, 0, 0, 0],
[-1, -2, 2, 4],
[ 3, -7, 1, 4]])
In [45]:
Copied!
df = pd.DataFrame(A, columns=list('QRST'))
df - df.iloc[0]
df = pd.DataFrame(A, columns=list('QRST'))
df - df.iloc[0]
Out[45]:
| Q | R | S | T | |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | -1 | -2 | 2 | 4 |
| 2 | 3 | -7 | 1 | 4 |
In [47]:
Copied!
df.subtract(df['R'], axis=0)
df.subtract(df['R'], axis=0)
Out[47]:
| Q | R | S | T | |
|---|---|---|---|---|
| 0 | -5 | 0 | -6 | -4 |
| 1 | -4 | 0 | -2 | 2 |
| 2 | 5 | 0 | 2 | 7 |