{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 行变成列 unstack"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"(10,)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"A 期中 29\n",
" 期末 60\n",
"B 期中 137\n",
" 期末 14\n",
"C 期中 68\n",
" 期末 5\n",
"D 期中 83\n",
" 期末 34\n",
"E 期中 29\n",
" 期末 127\n",
"Name: Python, dtype: int32"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'-----------------------'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(5, 2)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>期中</th>\n",
" <th>期末</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>29</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>137</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>68</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>83</td>\n",
" <td>34</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>29</td>\n",
" <td>127</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 期中 期末\n",
"A 29 60\n",
"B 137 14\n",
"C 68 5\n",
"D 83 34\n",
"E 29 127"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# pd.MultiIndex.from_product多重索引,二层\n",
"s = pd.Series(np.random.randint(0,151,size = 10),\n",
" index = pd.MultiIndex.from_product([list('ABCDE'),['期中','期末']]),\n",
" name = 'Python')\n",
"# 重塑,重新改变其形状,== numpy.reshape\n",
"# unstack stack 堆 先进先出\n",
"# 摞起来的,一堆书,落起来\n",
"# unstack将行变成列\n",
"df = s.unstack()\n",
"display(s.shape,s,'-----------------------',df.shape,df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 列变成行 stack"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Python</th>\n",
" <th>数学</th>\n",
" <th>En</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>49</td>\n",
" <td>137</td>\n",
" <td>71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>68</td>\n",
" <td>50</td>\n",
" <td>146</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>110</td>\n",
" <td>137</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>33</td>\n",
" <td>49</td>\n",
" <td>102</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>13</td>\n",
" <td>37</td>\n",
" <td>26</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Python 数学 En\n",
"A 49 137 71\n",
"B 68 50 146\n",
"C 110 137 45\n",
"D 33 49 102\n",
"E 13 37 26"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(15,)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"A Python 49\n",
" 数学 137\n",
" En 71\n",
"B Python 68\n",
" 数学 50\n",
" En 146\n",
"C Python 110\n",
" 数学 137\n",
" En 45\n",
"D Python 33\n",
" 数学 49\n",
" En 102\n",
"E Python 13\n",
" 数学 37\n",
" En 26\n",
"dtype: int32"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df2 = pd.DataFrame(np.random.randint(0,151,size = (5,3)),\n",
" index = list('ABCDE'),\n",
" columns=['Python','数学','En'])\n",
"\n",
"# 这一步操作,就是重塑,也就是reshape\n",
"s2 = df2.stack()\n",
"display(df2,s2.shape,s2)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" <th>E</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Python</th>\n",
" <td>49</td>\n",
" <td>68</td>\n",
" <td>110</td>\n",
" <td>33</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>数学</th>\n",
" <td>137</td>\n",
" <td>50</td>\n",
" <td>137</td>\n",
" <td>49</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>En</th>\n",
" <td>71</td>\n",
" <td>146</td>\n",
" <td>45</td>\n",
" <td>102</td>\n",
" <td>26</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D E\n",
"Python 49 68 110 33 13\n",
"数学 137 50 137 49 37\n",
"En 71 146 45 102 26"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 转置\n",
"df2.T"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" <th>E</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Python</th>\n",
" <td>49</td>\n",
" <td>68</td>\n",
" <td>110</td>\n",
" <td>33</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>数学</th>\n",
" <td>137</td>\n",
" <td>50</td>\n",
" <td>137</td>\n",
" <td>49</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>En</th>\n",
" <td>71</td>\n",
" <td>146</td>\n",
" <td>45</td>\n",
" <td>102</td>\n",
" <td>26</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D E\n",
"Python 49 68 110 33 13\n",
"数学 137 50 137 49 37\n",
"En 71 146 45 102 26"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.stack().unstack(level = 0)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
pandas重塑
最新推荐文章于 2024-01-13 17:26:30 发布