Bootstrap

DataWhale-Pandas第二次作业

 

 

## 七、问题与练习

 

### 1. 问题

#### 【问题一】 如何更改列或行的顺序?如何交换奇偶行(列)的顺序?

#### 【问题二】 如果要选出DataFrame的某个子集,请给出尽可能多的方法实现。

#### 【问题三】 query函数比其他索引方法的速度更慢吗?在什么场合使用什么索引最高效?

#### 【问题四】 单级索引能使用Slice对象吗?能的话怎么使用,请给出一个例子。

#### 【问题五】 如何快速找出某一列的缺失值所在索引?

#### 【问题六】 索引设定中的所有方法分别适用于哪些场合?怎么直接把某个DataFrame的索引换成任意给定同长度的索引?

#### 【问题七】 多级索引有什么适用场合?

#### 【问题八】 什么时候需要重复元素处理?

 

 

```python

import numpy as np

import pandas as pd

df = pd.read_csv('data/table.csv',index_col='ID').sort_index()

df.head()

```

 

 

 

 

<div>

<style scoped>

    .dataframe tbody tr th:only-of-type {

        vertical-align: middle;

    }

 

    .dataframe tbody tr th {

        vertical-align: top;

    }

    

    .dataframe thead th {

        text-align: right;

    }

</style>

<table border="1" class="dataframe">

  <thead>

    <tr style="text-align: right;">

      <th></th>

      <th>School</th>

      <th>Class</th>

      <th>Gender</th>

      <th>Address</th>

      <th>Height</th>

      <th>Weight</th>

      <th>Math</th>

      <th>Physics</th>

    </tr>

    <tr>

      <th>ID</th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <th>1101</th>

      <td>S_1</td>

      <td>C_1</td>

      <td>M</td>

      <td>street_1</td>

      <td>173</td>

      <td>63</td>

      <td>34.0</td>

      <td>A+</td>

    </tr>

    <tr>

      <th>1102</th>

      <td>S_1</td>

      <td>C_1</td>

      <td>F</td>

      <td>street_2</td>

      <td>192</td>

      <td>73</td>

      <td>32.5</td>

      <td>B+</td>

    </tr>

    <tr>

      <th>1103</th>

      <td>S_1</td>

      <td>C_1</td>

      <td>M</td>

      <td>street_2</td>

      <td>186</td>

      <td>82</td>

      <td>87.2</td>

      <td>B+</td>

    </tr>

    <tr>

      <th>1104</th>

      <td>S_1</td>

      <td>C_1</td>

      <td>F</td>

      <td>street_2</td>

      <td>167</td>

      <td>81</td>

      <td>80.4</td>

      <td>B-</td>

    </tr>

    <tr>

      <th>1105</th>

      <td>S_1</td>

      <td>C_1</td>

      <td>F</td>

      <td>street_4</td>

      <td>159</td>

      <td>64</td>

      <td>84.8</td>

      <td>B+</td>

    </tr>

  </tbody>

</table>

</div>

 

 

 

 

```python

#【问题一】 如何更改列或行的顺序?如何交换奇偶行(列)的顺序?

#提出index和columns

idxlist = (df.index.values)

collist = (df.columns.values)

#调整index和columns位置

i = 0;j = 3

idxlist[i],idxlist[j] = idxlist[j],idxlist[i]

collist = collist[0::2]

#使用df.reindex()。修改原始df的。

df.reindex(index = idxlist, columns = collist).head()

```

 

 

 

 

<div>

<style scoped>

    .dataframe tbody tr th:only-of-type {

        vertical-align: middle;

    }

 

    .dataframe tbody tr th {

        vertical-align: top;

    }

    

    .dataframe thead th {

        text-align: right;

    }

</style>

<table border="1" class="dataframe">

  <thead>

    <tr style="text-align: right;">

      <th></th>

      <th>School</th>

      <th>Gender</th>

      <th>Height</th>

      <th>Math</th>

    </tr>

    <tr>

      <th>ID</th>

      <th></th>

      <th></th>

      <th></th>

      <th></th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <th>1104</th>

      <td>S_1</td>

      <td>M</td>

      <td>173</td>

      <td>34.0</td>

    </tr>

    <tr>

      <th>1102</th>

      <td>S_1</td>

      <td>F</td>

      <td>192</td>

      <td>32.5</td>

    </tr>

    <tr>

      <th>1103</th>

      <td>S_1</td>

      <td>M</td>

      <td>186</td>

 

;