美文网首页
数据清理

数据清理

作者: Zero_Memory | 来源:发表于2023-01-18 14:30 被阅读0次

In[1]: import pandas as pd

          import numpy as np

1. 用stack清理变量值作为列名

# 加载state_fruit数据集

In[2]: state_fruit = pd.read_csv('data/state_fruit.csv', index_col=0)

        state_fruit

out[2]:

# stack方法可以将所有列名,转变为垂直的一级行索引

In[3]: state_fruit.stack()

out[3]: Texas    Apple      12

                Orange    10

                Banana    40

        Arizona  Apple      9

                Orange      7

                Banana    12

        Florida  Apple      0

                Orange    14

                Banana    190

        dtype: int64

# 使用reset_index(),将结果变为DataFrame

In[4]: state_fruit_tidy = state_fruit.stack().reset_index()

        state_fruit_tidy

out[4]:

# 重命名列名

In[5]: state_fruit_tidy.columns = ['state', 'fruit', 'weight']

        state_fruit_tidy

out[5]:

# 也可以使用rename_axis给不同的行索引层级命名

In[6]: state_fruit.stack()\

                  .rename_axis(['state', 'fruit'])\

out[6]: state    fruit

        Texas    Apple      12

                Orange    10

                Banana    40

        Arizona  Apple      9

                Orange      7

                Banana    12

        Florida  Apple      0

                Orange    14

                Banana    190

        dtype: int64

# 再次使用reset_index方法

In[7]: state_fruit.stack()\

                  .rename_axis(['state', 'fruit'])\

                  .reset_index(name='weight')

out[7]:

更多

# 读取state_fruit2数据集

In[8]: state_fruit2 = pd.read_csv('data/state_fruit2.csv')

        state_fruit2

out[8]:

# 州名不在行索引的位置上,使用stack将所有列名变为一个长Series

In[9]: state_fruit2.stack()

out[9]: 0  State      Texas

          Apple          12

          Orange        10

          Banana        40

        1  State    Arizona

          Apple          9

          Orange          7

          Banana        12

        2  State    Florida

          Apple          0

          Orange        14

          Banana        190

        dtype: object

# 先设定state作为行索引名,再stack,可以得到和前面相似的结果

In[10]: state_fruit2.set_index('State').stack()

out[10]: 0  State      Texas

            Apple          12

            Orange        10

            Banana        40

        1  State    Arizona

            Apple          9

            Orange          7

            Banana        12

        2  State    Florida

            Apple          0

            Orange        14

            Banana        190

        dtype: object

2. 用melt清理变量值作为列名

# 读取state_fruit2数据集

In[11]: state_fruit2 = pd.read_csv('data/state_fruit2.csv')

        state_fruit2

out[11]:

# 使用melt方法,将列传给id_vars和value_vars。melt可以将原先的列名作为变量,原先的值作为值。

In[12]: state_fruit2.melt(id_vars=['State'],

                          value_vars=['Apple', 'Orange', 'Banana'])

out[12]:

相关文章

网友评论

      本文标题:数据清理

      本文链接:https://www.haomeiwen.com/subject/ffffhdtx.html