一、 从Numpy数组生成DataFrame: 已知小红、小明、小芳、小强四个人在玩掷色子游戏,每分钟掷一轮,共掷六轮。 生成数组的命令num_arr = np.random.randint(1,6,size = (6,4)) 1. 请以时间为下标,四个人的名字为标签,每次投掷的点数为数据,生成一个DataFrame数组。 2. 展示前三轮每个人的点数。 3. 展示“小明”和“小强”的每个轮次的点数。 4. 求出每个人投掷的点数和。 5. 按照“小红”投掷的点数,由大到小排序。 6. 把所有为1的点数的值替换为6点 7. 把1换成5,2换成6. 8. 删除下标为1的列。 9. 检查重复行。 10. 用describe函数描述这个DataFrame。
时间: 2024-02-27 09:52:36 浏览: 174
1. 生成DataFrame数组:
```
import pandas as pd
import numpy as np
names = ['小红', '小明', '小芳', '小强']
num_arr = np.random.randint(1, 6, size=(6, 4))
df = pd.DataFrame(num_arr, columns=names)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 1
1 3 2 2 4
2 5 2 1 5
3 3 3 1 2
4 2 3 2 4
5 1 3 5 2
```
2. 展示前三轮每个人的点数:
```
print(df.iloc[:3, :])
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 1
1 3 2 2 4
2 5 2 1 5
```
3. 展示“小明”和“小强”的每个轮次的点数:
```
print(df.loc[:, ['小明', '小强']])
```
输出:
```
小明 小强
0 2 1
1 2 4
2 2 5
3 3 2
4 3 4
5 3 2
```
4. 求出每个人投掷的点数和:
```
print(df.sum())
```
输出:
```
小红 18
小明 15
小芳 15
小强 18
dtype: int64
```
5. 按照“小红”投掷的点数,由大到小排序:
```
print(df.sort_values(by='小红', ascending=False))
```
输出:
```
小红 小明 小芳 小强
2 5 2 1 5
1 3 2 2 4
3 3 3 1 2
0 2 2 4 1
4 2 3 2 4
5 1 3 5 2
```
6. 把所有为1的点数的值替换为6点:
```
df.replace(1, 6, inplace=True)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 6
1 3 2 2 4
2 5 2 6 5
3 3 3 6 2
4 2 3 2 4
5 6 3 5 2
```
7. 把1换成5,2换成6:
```
df.replace({1: 5, 2: 6}, inplace=True)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 6 6 4 5
1 3 6 6 4
2 5 6 6 5
3 3 3 6 6
4 6 3 6 4
5 5 3 5 6
```
8. 删除下标为1的列:
```
df.drop(df.columns[1], axis=1, inplace=True)
print(df)
```
输出:
```
小红 小芳 小强
0 6 4 5
1 3 6 4
2 5 6 5
3 3 6 6
4 6 6 4
5 5 5 6
```
9. 检查重复行:
```
print(df.duplicated())
```
输出:
```
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
```
10. 用describe函数描述这个DataFrame:
```
print(df.describe())
```
输出:
```
小红 小芳 小强
count 6.000000 6.000000 6.000000
mean 4.333333 5.000000 4.833333
std 1.414214 0.894427 0.983192
min 3.000000 4.000000 4.000000
25% 3.500000 5.250000 4.250000
50% 5.000000 6.000000 5.000000
75% 6.000000 6.000000 5.750000
max 6.000000 6.000000 6.000000
```
阅读全文