{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "import pandas as pd\n", "\n", "from pandas import Series,DataFrame" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PythonEnMath
期中期末期中期末期中期末
A1311011731517
B6234531012457
C247636117123105
D11246794246122
E661131044510108
F11110844113221
\n", "
" ], "text/plain": [ " Python En Math \n", " 期中 期末 期中 期末 期中 期末\n", "A 131 101 1 73 15 17\n", "B 62 34 53 101 24 57\n", "C 24 76 36 117 123 105\n", "D 112 46 79 42 46 122\n", "E 66 113 104 45 10 108\n", "F 111 108 4 41 132 21" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 多层列索引\n", "df = DataFrame(np.random.randint(0,150,size = (6,6)),index = list('ABCDEF'),\n", " columns=pd.MultiIndex.from_product([['Python','En','Math'],['期中','期末']]))\n", "df" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "Python 期中 84.3\n", " 期末 79.7\n", "En 期中 46.2\n", " 期末 69.8\n", "Math 期中 58.3\n", " 期末 71.7\n", "dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# round保留2位小数\n", "df.mean().round(1)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PythonEnMath
期中期末期中期末期中期末
A1311011731517
B6234531012457
C247636117123105
D11246794246122
E661131044510108
F11110844113221
\n", "
" ], "text/plain": [ " Python En Math \n", " 期中 期末 期中 期末 期中 期末\n", "A 131 101 1 73 15 17\n", "B 62 34 53 101 24 57\n", "C 24 76 36 117 123 105\n", "D 112 46 79 42 46 122\n", "E 66 113 104 45 10 108\n", "F 111 108 4 41 132 21" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PythonEnMath
A116.037.016.0
B48.077.040.5
C50.076.5114.0
D79.060.584.0
E89.574.559.0
F109.522.576.5
\n", "
" ], "text/plain": [ " Python En Math\n", "A 116.0 37.0 16.0\n", "B 48.0 77.0 40.5\n", "C 50.0 76.5 114.0\n", "D 79.0 60.5 84.0\n", "E 89.5 74.5 59.0\n", "F 109.5 22.5 76.5" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# axis = 0代表行\n", "# axis = 1代表列\n", "df.mean(axis = 1,level = 0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
期中期末
A49.063.7
B46.364.0
C61.099.3
D79.070.0
E60.088.7
F82.356.7
\n", "
" ], "text/plain": [ " 期中 期末\n", "A 49.0 63.7\n", "B 46.3 64.0\n", "C 61.0 99.3\n", "D 79.0 70.0\n", "E 60.0 88.7\n", "F 82.3 56.7" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean(axis = 1,level = 1).round(1)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PythonEnMath
期中期末期中期末期中期末
A1311011731517
B6234531012457
C247636117123105
D11246794246122
E661131044510108
F11110844113221
\n", "
" ], "text/plain": [ " Python En Math \n", " 期中 期末 期中 期末 期中 期末\n", "A 131 101 1 73 15 17\n", "B 62 34 53 101 24 57\n", "C 24 76 36 117 123 105\n", "D 112 46 79 42 46 122\n", "E 66 113 104 45 10 108\n", "F 111 108 4 41 132 21" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EnMathPython
A期中115131
期末7317101
B期中532462
期末1015734
C期中3612324
期末11710576
D期中7946112
期末4212246
E期中1041066
期末45108113
F期中4132111
期末4121108
\n", "
" ], "text/plain": [ " En Math Python\n", "A 期中 1 15 131\n", " 期末 73 17 101\n", "B 期中 53 24 62\n", " 期末 101 57 34\n", "C 期中 36 123 24\n", " 期末 117 105 76\n", "D 期中 79 46 112\n", " 期末 42 122 46\n", "E 期中 104 10 66\n", " 期末 45 108 113\n", "F 期中 4 132 111\n", " 期末 41 21 108" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 行和列的多层索引,进行转换\n", "# Stack the prescribed level(s) from columns to index.\n", "# 从列变成行\n", "df2 = df.stack(level = 1)\n", "df2" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EnMathPython
ABCDEFABCDEFABCDEF
期中1533679104415241234610132131622411266111
期末73101117424541175710512210821101347646113108
\n", "
" ], "text/plain": [ " En Math Python \n", " A B C D E F A B C D E F A B C D E F\n", "期中 1 53 36 79 104 4 15 24 123 46 10 132 131 62 24 112 66 111\n", "期末 73 101 117 42 45 41 17 57 105 122 108 21 101 34 76 46 113 108" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 从行变成列\n", "df2.unstack(level= 0 )" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EnMathPython
期中期末期中期末期中期末
A1731517131101
B5310124576234
C361171231052476
D79424612211246
E104451010866113
F44113221111108
\n", "
" ], "text/plain": [ " En Math Python \n", " 期中 期末 期中 期末 期中 期末\n", "A 1 73 15 17 131 101\n", "B 53 101 24 57 62 34\n", "C 36 117 123 105 24 76\n", "D 79 42 46 122 112 46\n", "E 104 45 10 108 66 113\n", "F 4 41 132 21 111 108" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.unstack(level = 1)" ] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }