Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "위의 titanic 데이터 프레임에서 \"Sex\"와 \"Pclass\"(객실등급)를 index와 columns으로 삼아 pivot을 해보도록 하자. <br>\n",
- "우선, 기존의 데이터프레임 중 두 개의 컬럼 \"Sex\"와 \"Pclass\"으로 구성된 새로운 데이터프레임을 만들어보자."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "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>Sex</th>\n",
- " <th>Pclass</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>886</th>\n",
- " <td>male</td>\n",
- " <td>2</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>887</th>\n",
- " <td>female</td>\n",
- " <td>1</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>888</th>\n",
- " <td>female</td>\n",
- " <td>3</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>889</th>\n",
- " <td>male</td>\n",
- " <td>1</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>890</th>\n",
- " <td>male</td>\n",
- " <td>3</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " Sex Pclass\n",
- "886 male 2\n",
- "887 female 1\n",
- "888 female 3\n",
- "889 male 1\n",
- "890 male 3"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_f1 = pd.DataFrame(titanic, columns=[\"Sex\", \"Pclass\"])\n",
- "titanic_f1.tail()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "titanic_f1 데이터프레임에는 특정 \"Pclass\" & 특정 \"Sex\" 조합에 해당하는 데이터가 여러 번 나타날 것이므로, 바로 pivot 메서드를 사용하게되면 에러가 발생하기 때문에 먼저 groupby를 해주어야 한다. \"Sex\"와 \"Pclass\"로 groupby를 해서 데이터의 수를 \"Counts\" 칼럼으로 만들어주자. <br>\n",
- "성별은 female & male, 객실등급은 1,2,3 등급이 있으므로 6가지 조합의 데이터 수를 결과로 얻게될 것이다."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "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>Sex</th>\n",
- " <th>Pclass</th>\n",
- " <th>Counts</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>0</th>\n",
- " <td>female</td>\n",
- " <td>1</td>\n",
- " <td>94</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>1</th>\n",
- " <td>female</td>\n",
- " <td>2</td>\n",
- " <td>76</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2</th>\n",
- " <td>female</td>\n",
- " <td>3</td>\n",
- " <td>144</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>3</th>\n",
- " <td>male</td>\n",
- " <td>1</td>\n",
- " <td>122</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>4</th>\n",
- " <td>male</td>\n",
- " <td>2</td>\n",
- " <td>108</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>5</th>\n",
- " <td>male</td>\n",
- " <td>3</td>\n",
- " <td>347</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " Sex Pclass Counts\n",
- "0 female 1 94\n",
- "1 female 2 76\n",
- "2 female 3 144\n",
- "3 male 1 122\n",
- "4 male 2 108\n",
- "5 male 3 347"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_f1 = titanic.groupby([\"Sex\",\"Pclass\"]).size().reset_index(name=\"Counts\")\n",
- "titanic_f1"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "이제 pivot 메서드를 통해 \"Sex\"를 index로, \"Pclass\"를 columns로 하고 \"Counts\"가 values인 새로운 데이터프레임을 만들 수 있다."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "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>Pclass</th>\n",
- " <th>1</th>\n",
- " <th>2</th>\n",
- " <th>3</th>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Sex</th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>female</th>\n",
- " <td>94</td>\n",
- " <td>76</td>\n",
- " <td>144</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>male</th>\n",
- " <td>122</td>\n",
- " <td>108</td>\n",
- " <td>347</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- "Pclass 1 2 3\n",
- "Sex \n",
- "female 94 76 144\n",
- "male 122 108 347"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_f1.pivot(\"Sex\",\"Pclass\",\"Counts\")"
- ]
- }
- ],
- "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
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement