{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 案例:《转角遇到爱》背后的数据\n",
"\n",
"数据新闻的另一种视角与实现——《转角遇到爱》作品分析 #43\n",
"\n",
"- 作品链接:https://h5.thepaper.cn/html/zt/2018/08/seekinglove/index.html\n",
"- 简介:获得2018年SND(美国新闻媒体视觉设计协会)最佳数字设计铜奖。选一个晴天的周日,从上海人民广场地铁站9号口出门,左手边就是闻名全国的人民广场相亲角。五六十岁模样的大叔大妈们带着伞和小板凳,在这里为他们的晚辈寻觅一份姻缘。澎湃新闻 www.thepaper.cn 和姐妹英文媒体“第六声”的数据记者花费了六个周末的时间,收集了874份相亲广告。从中可以读出关于618位女士和256位男士的觅爱故事。\n",
"- 解读:https://github.com/data-journalism/data-journalism.github.io/discussions/43"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:46:47.995690Z",
"start_time": "2021-10-24T06:46:47.992003Z"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import pylab as plt\n",
"\n",
"plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 用来正常显示中文标签\n",
"plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号, 注意['SimHei']对应这句不行.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:18:13.389614Z",
"start_time": "2021-10-24T06:18:13.270272Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MPs' expenses claims, Jul-Dec, 2009.xlsx\r\n",
"\u001b[31mdata.js\u001b[m\u001b[m*\r\n",
"db_new.csv\r\n"
]
}
],
"source": [
"ls './data/'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:18:38.320003Z",
"start_time": "2021-10-24T06:18:38.246064Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" Gender.self | \n",
" Year.self | \n",
" Born.self | \n",
" Hukou.self | \n",
" Live.self | \n",
" Marriage.self | \n",
" Height.self | \n",
" Weight.self | \n",
" Looking.self | \n",
" ... | \n",
" Hobby.wanted | \n",
" Edu.min.wanted | \n",
" Edu.min.n.wanted | \n",
" Job.wanted | \n",
" Salary.min.wanted | \n",
" Apt.wanted | \n",
" Family.wanted | \n",
" Other.wanted | \n",
" interesting.wanted | \n",
" Similar.wanted | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 女性 | \n",
" 1987 | \n",
" N | \n",
" N | \n",
" N | \n",
" N | \n",
" 1.65 | \n",
" N | \n",
" 皮肤白,大眼睛 | \n",
" ... | \n",
" 无不良嗜好 | \n",
" N | \n",
" N | \n",
" 稳定 | \n",
" N | \n",
" 有婚房 | \n",
" N | \n",
" 81年不考虑。家境较好,有独立婚房。靠近长宁区 | \n",
" 81年不考虑 | \n",
" N | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 男性 | \n",
" 1983 | \n",
" 浙江 | \n",
" 有上海户口 | \n",
" N | \n",
" N | \n",
" 1.83 | \n",
" N | \n",
" N | \n",
" ... | \n",
" N | \n",
" 本科 | \n",
" 4 | \n",
" N | \n",
" N | \n",
" 要有婚房 | \n",
" 单亲家庭勿扰 | \n",
" 89年不要,独生女,家庭条件相当 | \n",
" 89年不要 | \n",
" Y | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 男性 | \n",
" 1970 | \n",
" 上海 | \n",
" 有上海户口 | \n",
" N | \n",
" 单身 | \n",
" 1.75 | \n",
" N | \n",
" N | \n",
" ... | \n",
" N | \n",
" N | \n",
" N | \n",
" 白领工作 | \n",
" N | \n",
" N | \n",
" N | \n",
" 条件相当 | \n",
" 白领工作 | \n",
" Y | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 男性 | \n",
" 1983 | \n",
" 上海 | \n",
" 有上海户口 | \n",
" 上海 | \n",
" N | \n",
" 1.8 | \n",
" N | \n",
" N | \n",
" ... | \n",
" N | \n",
" 本科 | \n",
" 4 | \n",
" 稳定工作 | \n",
" N | \n",
" N | \n",
" N | \n",
" N | \n",
" 本分 | \n",
" N | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 女性 | \n",
" 1988 | \n",
" 上海 | \n",
" 有上海户口 | \n",
" 上海 | \n",
" N | \n",
" 1.69 | \n",
" N | \n",
" 清纯、秀丽、有气质 | \n",
" ... | \n",
" 不抽烟 | \n",
" 本科 | \n",
" 4 | \n",
" N | \n",
" N | \n",
" N | \n",
" N | \n",
" 条件相当 | \n",
" 不抽烟 | \n",
" Y | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 43 columns
\n",
"
"
],
"text/plain": [
" id Gender.self Year.self Born.self Hukou.self Live.self Marriage.self \\\n",
"0 1 女性 1987 N N N N \n",
"1 2 男性 1983 浙江 有上海户口 N N \n",
"2 3 男性 1970 上海 有上海户口 N 单身 \n",
"3 4 男性 1983 上海 有上海户口 上海 N \n",
"4 5 女性 1988 上海 有上海户口 上海 N \n",
"\n",
" Height.self Weight.self Looking.self ... Hobby.wanted Edu.min.wanted \\\n",
"0 1.65 N 皮肤白,大眼睛 ... 无不良嗜好 N \n",
"1 1.83 N N ... N 本科 \n",
"2 1.75 N N ... N N \n",
"3 1.8 N N ... N 本科 \n",
"4 1.69 N 清纯、秀丽、有气质 ... 不抽烟 本科 \n",
"\n",
" Edu.min.n.wanted Job.wanted Salary.min.wanted Apt.wanted Family.wanted \\\n",
"0 N 稳定 N 有婚房 N \n",
"1 4 N N 要有婚房 单亲家庭勿扰 \n",
"2 N 白领工作 N N N \n",
"3 4 稳定工作 N N N \n",
"4 4 N N N N \n",
"\n",
" Other.wanted interesting.wanted Similar.wanted \n",
"0 81年不考虑。家境较好,有独立婚房。靠近长宁区 81年不考虑 N \n",
"1 89年不要,独生女,家庭条件相当 89年不要 Y \n",
"2 条件相当 白领工作 Y \n",
"3 N 本分 N \n",
"4 条件相当 不抽烟 Y \n",
"\n",
"[5 rows x 43 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('./data/db_new.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:19:15.640192Z",
"start_time": "2021-10-24T06:19:15.635514Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"874"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:19:20.850626Z",
"start_time": "2021-10-24T06:19:20.835902Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" Year.self | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 874.000000 | \n",
" 874.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 438.929062 | \n",
" 1982.425629 | \n",
"
\n",
" \n",
" std | \n",
" 253.149643 | \n",
" 7.339553 | \n",
"
\n",
" \n",
" min | \n",
" 1.000000 | \n",
" 1945.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 219.500000 | \n",
" 1980.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 439.500000 | \n",
" 1984.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 657.750000 | \n",
" 1987.000000 | \n",
"
\n",
" \n",
" max | \n",
" 876.000000 | \n",
" 1995.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id Year.self\n",
"count 874.000000 874.000000\n",
"mean 438.929062 1982.425629\n",
"std 253.149643 7.339553\n",
"min 1.000000 1945.000000\n",
"25% 219.500000 1980.000000\n",
"50% 439.500000 1984.000000\n",
"75% 657.750000 1987.000000\n",
"max 876.000000 1995.000000"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:20:06.957776Z",
"start_time": "2021-10-24T06:20:06.953230Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['id', 'Gender.self', 'Year.self', 'Born.self', 'Hukou.self',\n",
" 'Live.self', 'Marriage.self', 'Height.self', 'Weight.self',\n",
" 'Looking.self', 'Personality.self', 'Edu.self', 'Eduno.self',\n",
" 'top.self', 'Abroad.self', 'Major.self', 'Job.self', 'Salary.self',\n",
" 'Apt.self', 'Family.self', 'Hobby.self', 'Other.self',\n",
" 'interesting.self', 'Gender.wanted', 'Year.max.wanted',\n",
" 'Year.min.wanted', 'Year.text.wanted', 'Hukou.wanted', 'Live.wanted',\n",
" 'Marriage.wanted', 'Height.min.wanted', 'Looking.wanted',\n",
" 'Personality.wanted', 'Hobby.wanted', 'Edu.min.wanted',\n",
" 'Edu.min.n.wanted', 'Job.wanted', 'Salary.min.wanted', 'Apt.wanted',\n",
" 'Family.wanted', 'Other.wanted', 'interesting.wanted',\n",
" 'Similar.wanted'],\n",
" dtype='object')"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:36:42.242387Z",
"start_time": "2021-10-24T06:36:42.099005Z"
}
},
"outputs": [],
"source": [
"df['Age'] = 2018 - df['Year.self']"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:38:16.342486Z",
"start_time": "2021-10-24T06:38:15.932000Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAFxCAYAAABdvUFfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAr0klEQVR4nO3de5yVdb33/9eHg46cRFSUEN0aoakVZuZhm6a3/nZ20DtPdwftYXlId5luVJIU1A1bzLZgbjNyu9WKCKvdnbeKImGKmYfMw1YTERXlkFIGjuMAM8z6/v5Ya5YzwwAyc82sdc28no/Hegzre13rsz6zWDO8+a7vdV2RUkKSJEnKgz6VbkCSJEl6rwyvkiRJyg3DqyRJknLD8CpJkqTcMLxKkiQpNwyvkiRJyg3DqyRJknLD8CpJkqTc6FfpBrpDRATwPuDtSvciSZKkjRoMrEibuIpWrwivFIPrsko3IUmSpM3aBVi+sY29Jby+DbB06VKGDBlS6V4kSZLURm1tLaNGjYLNfFLeW8IrAEOGDDG8SpIk5ZgHbEmSJCk3DK+SJEnKDcOrJEmScqNXrXmVJEnqiKamJhobGyvdRq7179+fvn37drqO4VWSJGkjUkq8/vrrrF69utKt9AhDhw5l5513pngK/o4xvEqSJG1Ec3AdPnw4AwYM6FTo6s1SStTX17Ny5UoARowY0eFahldJkqR2NDU1lYPr9ttvX+l2cm+bbbYBYOXKlQwfPrzDSwg8YEuSJKkdzWtcBwwYUOFOeo7m17Iz64cNr5IkSZvgUoHsZPFaGl4lSZKUG4ZXSZKknFm2bBkRwf3331/RPiKCmTNnlu+/+eabHHfccQwePJhp06Z1yXN6wJakipg89WpW1dZlVm+7IYOYOGF8ZvUk6b0qFAr85Cc/4aabbuKZZ56hoaGBnXfemSOOOIKbb7650u11q0suuYTnn3+e+fPns91223XJcxheJVXEqto6Rh15Smb1lt43c/M7SVLG1q9fz8knn8zDDz/MJZdcwg9+8AMaGhp48cUXmTVrVqXb63YPP/wwxx9/PB//+Me77DkMr5IkSR10+eWX88gjj/DHP/6RXXbZpTx+wAEH8KUvfamCnW1aoVCgT5/sV4++88471NTUZF63Jde8SpIkdcA777zD9OnTmTx5cqvg2p6bb76Z0aNHM3DgQA455BAee+yx8rZPfvKTnHHGGXz3u99l5513Zscdd2TChAmtHv/kk09y6KGHUlNTwwc+8AHuvffeDZ7jzjvv5EMf+hADBgxg7Nix3HPPPeVtp512GkcddRRTpkxh4MCB3HDDDeVta9as4Zvf/CY777wz22yzDQcccEB5W0NDAxdeeCHDhw9n2LBhnHjiibz++usbPPeSJUuICF566SWuuOKKLl2Pa3iVJEnqgEceeYT6+no++9nPbnK/X/3qV1xwwQVcdtllPPTQQ+y3334cc8wxrFq1qrzPXXfdxfLly5kzZw7//M//zFVXXVUOn6tXr+boo49mxx135P7772fatGlceeWVrZ7j0Ucf5aSTTuLss8/m4Ycf5oQTTuDYY49l8eLF5X0WLlzI888/z+9//3s+97nPlccnTpzInXfeyW233cbvf/97TjrppPK2cePGMXfuXGbNmsXdd9/NypUr251R3mWXXXjxxRfZddddOffcc3nxxRc58MADt+wFfY9cNiBJktQBb7zxBhHB8OHDy2MzZszg/PPPL9+/7777uPTSS5k6dSqnnnoqANdddx0/+9nPmDNnDl/+8pcB2HHHHbnuuusA2G+//bj55ptZsGABn/rUp/jhD39Iv379+PnPf17+SL5Pnz6tQvNll13Geeedxze+8Q0APvKRj3Dbbbdx2223cckllwBQW1vLj370IwYNGtTq+1i0aBF77rknhx9+OAD7778/UDyjwYwZM3j22WfZa6+9AJg2bRoHHHAAy5cvZ+TIkeUa/fr1Y/To0fTv359hw4YxevToTr66G+fMqyRJUgcMHDiQlBJvvfVWeewLX/gCTz31FHfddRfr1q2jsbGRRYsWcd5551FTU0NNTQ0DBw6ktraWJUuWlB+33377lf8cEey222789a9/BeDpp5/mkEMOabWW9MMf/nCrXv70pz8xbdq08nPU1NTw/PPPt3qOvffee4PgCnDuuefy4IMPcuCBB3LbbbfR1NRUft6mpibGjh1brnnooYcCtKrb3Zx5lSRJ6oCPfvSjADzwwAMcd9xxAAwdOpShQ4eWg2bfvn1JKfEf//EfHHbYYa0ev8MOO5T/3L9//1bb+vXrR0oJgLq6ug1C57p161rdb2xsZMKECXzxi19sNb7tttuW/9xecAU4+uijeemll/j+97/P2WefzfTp07n//vvLl3B9+OGH2WabbVo9Ztddd223VncwvEqSJHXAqFGj+MxnPsOkSZM46qijGDhwYLv77bTTTrz22mvlj9631OjRo7n99ttZv349/foVo9uDDz7Yap+99tqLl156qcPPMWLECK666irOPPNMRo8ezbx588q13nzzTY466qgO1e0KLhuQJEnqoB/96EfU1tZy0EEHMWvWLJ577jkeeeSRVkfzjxs3jmnTpnHdddfx9NNPc8cdd7Q6YGpzzjzzTF577TVOP/10Hn/8cWbPns0111zTap9x48bx85//nMsvv5wnn3ySe++9lxNPPJE333yz3Zpf/OIXy1fAmjRpErfffjvPPfccd999N3369OH9738/e+21F8cccwxnnHEG//3f/83TTz/NrbfeynnnndeBVyo7zrxKkiR10MiRI3n88ce58sormThxIsuWLWPo0KGMHj2aa6+9lrFjx3LwwQfz9ttvc9VVV/Htb3+bXXfdldNOO+09P8c+++zDzJkzueSSS7jtttv4+Mc/zg033FA+wArg5JNP5vXXX2f69OlMnTqVkSNHcsIJJzBkyJB2az7//PPlA80igrPOOova2lrGjBnD7Nmz2XvvvQH4yU9+wre+9S2+9rWvkVLigx/8YPkAsEqJ5vUUPVlEDAHeeuuttzb6lyipe42bMCnzK2xNm/qvmdWTpLVr1/LKK6+w++67d/mJ93uLTb2mtbW1zWt0t00p1W6shssGJEmSlBsuG5B6qMlTr2ZVbV1m9bYbMoiJE8ZnVk+SpI4wvEo91Krausw/lpckqdJcNiBJkqTcMLxKkiQpNwyvkiRJyg3DqyRJknLD8CpJkqTcMLxKkiQpNwyvkiRJ2sD69esr3UK7DK+SJEm9yJw5c3jjjTc2u1///v2pq3v3Yjdr164FYMqUKZx99tld1t/mGF4lSZJ6iVWrVnHcccexePHiLXpcXV0d22+/PStXruyizt47r7AlSZLUCVlfjntzOnO57jlz5rDTTjtxyCGHvKf9r732Wi699FIeeOABdt99d4YPH96h582S4VWSJKkTsr4c9+ZsyeW6C4UChUKhfP/222/nhBNOoKmpaaOPmTt3LosWLQJg9uzZjB07lnnz5rFw4UIGDRpEY2MjhUKBmTPf7eOJJ55gzJgxHfhutpzLBiRJknqor33ta/Tv3798++Uvf8l1113Xaqzt7cknnyQiAJgwYQKzZ89m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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize =(8, 4), dpi = 100)\n",
"\n",
"sns.histplot(\n",
" df,\n",
" x=\"Age\", hue=\"Gender.self\",\n",
" edgecolor=\".3\",\n",
" linewidth=.5,\n",
" log_scale=True,\n",
");"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:42:08.666934Z",
"start_time": "2021-10-24T06:42:08.511165Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# https://seaborn.pydata.org/generated/seaborn.violinplot.html#seaborn.violinplot\n",
"plt.figure(figsize =(8, 4), dpi = 100)\n",
"sns.violinplot(x=\"Gender.self\", y=\"Age\", data=df);"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:47:09.837345Z",
"start_time": "2021-10-24T06:47:09.832998Z"
}
},
"outputs": [],
"source": [
"# deal with missing data\n",
"df['Height.self'] = [float(i) if i != 'N' else np.nan for i in df['Height.self']]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:47:52.379338Z",
"start_time": "2021-10-24T06:47:52.177822Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize =(8, 4), dpi = 100)\n",
"sns.violinplot(x=\"Gender.self\", y=\"Height.self\", data=df);"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:42:51.657499Z",
"start_time": "2021-10-24T06:42:51.652864Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['N', '有上海户口', '没有上海户口'], dtype=object)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Hukou.self'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:43:13.243742Z",
"start_time": "2021-10-24T06:43:13.238432Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"有上海户口 421\n",
"N 409\n",
"没有上海户口 44\n",
"Name: Hukou.self, dtype: int64"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Hukou.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:52:10.207425Z",
"start_time": "2021-10-24T06:52:10.201328Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 628\n",
"气质佳 14\n",
"帅气 9\n",
"貌佳清秀 8\n",
"清秀 6\n",
" ... \n",
"肤白、身材好 1\n",
"帅 1\n",
"品貌端庄 1\n",
"形象好、气质佳 1\n",
"英俊帅气 1\n",
"Name: Looking.self, Length: 159, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Looking.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:52:41.622357Z",
"start_time": "2021-10-24T06:52:41.616607Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0 N\n",
"1 N\n",
"2 N\n",
"3 N\n",
"4 善良、进取、阳光、有责任心\n",
" ... \n",
"869 N\n",
"870 性格文静、善良贤惠、老实本分\n",
"871 N\n",
"872 善良\n",
"873 开朗、稳重、有责任心\n",
"Name: Personality.self, Length: 874, dtype: object"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Personality.self']"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:54:48.501071Z",
"start_time": "2021-10-24T06:54:48.495102Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"本科 373\n",
"研究生 272\n",
"N 120\n",
"大专 81\n",
"博士 14\n",
"中专 7\n",
"高中 6\n",
"初中 1\n",
"Name: Edu.self, dtype: int64"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Edu.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:06:37.089895Z",
"start_time": "2021-10-24T07:06:37.084709Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"4 373\n",
"5 272\n",
"N 120\n",
"3 81\n",
"6 14\n",
"1 7\n",
"2 6\n",
"0 1\n",
"Name: Eduno.self, dtype: int64"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Eduno.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:07:04.224003Z",
"start_time": "2021-10-24T07:07:04.218551Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 680\n",
"重点大学毕业 194\n",
"Name: top.self, dtype: int64"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['top.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:08:46.474953Z",
"start_time": "2021-10-24T07:08:46.469495Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 782\n",
"Y 92\n",
"Name: Abroad.self, dtype: int64"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Abroad.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:11:01.330966Z",
"start_time": "2021-10-24T07:11:01.324309Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 111\n",
"外企 50\n",
"银行 31\n",
"国企 28\n",
"公务员 21\n",
" ... \n",
"互联网研发 1\n",
"上海二级医院 1\n",
"制造企业进出口专员 1\n",
"外企白领 1\n",
"外资航空公司 1\n",
"Name: Job.self, Length: 466, dtype: int64"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Job.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:10:23.283854Z",
"start_time": "2021-10-24T07:10:23.278202Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 803\n",
"金融 13\n",
"会计 4\n",
"英语 3\n",
"生物化学 3\n",
"电子信息 2\n",
"计算机 2\n",
"传媒 2\n",
"财务管理 2\n",
"法学 2\n",
"财会 2\n",
"外语 2\n",
"金融数学 1\n",
"建筑学 1\n",
"工商管理 1\n",
"法学和经济 1\n",
"中医 1\n",
"播音主持 1\n",
"计算机科学 1\n",
"医学 1\n",
"电力电子 1\n",
"新闻媒体 1\n",
"金融学 1\n",
"护理 1\n",
"同声传译 1\n",
"幼儿师范学前教育 1\n",
"微电子 1\n",
"英语和会计 1\n",
"认证检测 1\n",
"经贸外语 1\n",
"政法 1\n",
"金融统计 1\n",
"电气自动化、工商管理 1\n",
"数据分析 1\n",
"生物 1\n",
"数理统计 1\n",
"绘画,设计 1\n",
"中文 1\n",
"药剂 1\n",
"通信专业 1\n",
"临床医学 1\n",
"服装设计 1\n",
"工程 1\n",
"通信工程 1\n",
"建筑 1\n",
"机电工程 1\n",
"Name: Major.self, dtype: int64"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Major.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:11:43.569746Z",
"start_time": "2021-10-24T07:11:43.563988Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 553\n",
"120000 64\n",
"200000 46\n",
"300000 27\n",
"60000 17\n",
"96000 15\n",
"100000 14\n",
"84000 14\n",
"240000 13\n",
"180000 13\n",
"250000 12\n",
"150000 12\n",
"400000 10\n",
"72000 9\n",
"500000 9\n",
"78000 4\n",
"350000 3\n",
"1000000 3\n",
"360000 2\n",
"162000 2\n",
"48000 2\n",
"90000 2\n",
"144000 2\n",
"66000 2\n",
"108000 2\n",
"800000 2\n",
"57600 2\n",
"70000 1\n",
"6000000 1\n",
"140000 1\n",
"54000 1\n",
"1300000 1\n",
"36000 1\n",
"600000 1\n",
"700000 1\n",
"52000 1\n",
"370000 1\n",
"42000 1\n",
"450000 1\n",
"660000 1\n",
"270000 1\n",
"160000 1\n",
"156000 1\n",
"24000 1\n",
"74400 1\n",
"Name: Salary.self, dtype: int64"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Salary.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:12:57.262759Z",
"start_time": "2021-10-24T07:12:57.257039Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 461\n",
"有房 413\n",
"Name: Apt.self, dtype: int64"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Apt.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:14:50.067552Z",
"start_time": "2021-10-24T07:14:50.061602Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 635\n",
"父母退休 36\n",
"父母已退休 9\n",
"家境好 8\n",
"知识分子家庭 8\n",
" ... \n",
"父母退休、家庭和睦 1\n",
"知识分子家庭出身 1\n",
"父亲在政法部门工作,母亲是教师 1\n",
"父亲母亲已退休 1\n",
"纯朴家风,父母均为事业单位退休 1\n",
"Name: Family.self, Length: 149, dtype: int64"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Family.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:16:24.706467Z",
"start_time": "2021-10-24T07:16:24.700302Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 775\n",
"无不良嗜好 24\n",
"烟酒不沾 9\n",
"爱国画 3\n",
"兴趣爱好广泛 2\n",
" ... \n",
"爱健身、游泳、做饭 1\n",
"无烟酒不良嗜好 1\n",
"钢琴十级,擅长中英文演讲 1\n",
"爱好书法、古筝 1\n",
"钢琴八级 1\n",
"Name: Hobby.self, Length: 61, dtype: int64"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Hobby.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:18:24.758063Z",
"start_time": "2021-10-24T07:18:24.751908Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 286\n",
"备有婚房 158\n",
"独生女 23\n",
"家境好 11\n",
"独生女。备有婚房 10\n",
" ... \n",
"爱清洁。名下有1000万房产 1\n",
"三个专业毕业 1\n",
"独生子 1\n",
"有四套房车 1\n",
"独生女,闵行有房,无贷 1\n",
"Name: Other.self, Length: 323, dtype: int64"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Other.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:19:33.233114Z",
"start_time": "2021-10-24T07:19:33.226390Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 634\n",
"无同居史 4\n",
"自己创业 3\n",
"有绿卡 3\n",
"高知家庭 3\n",
" ... \n",
"稳重大方 1\n",
"活泼文静 1\n",
"外语10级 1\n",
"肤白 1\n",
"明年毕业 1\n",
"Name: interesting.self, Length: 215, dtype: int64"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['interesting.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:20:41.416534Z",
"start_time": "2021-10-24T07:20:41.410990Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 781\n",
"上海 51\n",
"美国 12\n",
"澳大利亚悉尼 5\n",
"澳大利亚 3\n",
"德国 2\n",
"加拿大 2\n",
"日本 2\n",
"新加坡 2\n",
"加拿大多伦多 2\n",
"山东 1\n",
"浙江杭州 1\n",
"西班牙 1\n",
"英国伦敦 1\n",
"日本大阪 1\n",
"美国纽约 1\n",
"美国加州 1\n",
"西班牙巴塞罗那 1\n",
"美国芝加哥 1\n",
"加拿大温哥华 1\n",
"美国旧金山 1\n",
"江苏昆山 1\n",
"Name: Live.self, dtype: int64"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Live.self'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:21:25.899002Z",
"start_time": "2021-10-24T07:21:25.893364Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 777\n",
"Y 97\n",
"Name: Similar.wanted, dtype: int64"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Similar.wanted'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:22:32.004135Z",
"start_time": "2021-10-24T07:22:31.997765Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 754\n",
"五官端正 10\n",
"清秀 10\n",
"相貌端正 5\n",
"貌佳 4\n",
" ... \n",
"相貌较好 1\n",
"容貌稍好 1\n",
"气质佳、品貌优秀 1\n",
"长相好 1\n",
"靓女、甜美可爱 1\n",
"Name: Looking.wanted, Length: 71, dtype: int64"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Looking.wanted'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:26:54.473386Z",
"start_time": "2021-10-24T07:26:54.468044Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"N 760\n",
"上海户口 97\n",
"江浙沪 15\n",
"澳大利亚悉尼 1\n",
"美国/加拿大 1\n",
"Name: Hukou.wanted, dtype: int64"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Hukou.wanted'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:27:30.205036Z",
"start_time": "2021-10-24T07:27:30.193707Z"
}
},
"outputs": [],
"source": [
"df['Looking.self.dummy'] = [1 if i != 'N' else 0 for i in df['Looking.self']]\n",
"df['Looking.wanted.dummy'] = [1 if i != 'N' else 0 for i in df['Looking.wanted']]\n",
"df['Personality.self.dummy'] = [1 if i != 'N' else 0 for i in df['Personality.self']]\n",
"df['Family.self.dummy'] = [1 if i != 'N' else 0 for i in df['Family.self']]\n",
"df['Hobby.self.dummy'] = [1 if i != 'N' else 0 for i in df['Hobby.self']]\n",
"df['Other.self.dummy'] = [1 if i != 'N' else 0 for i in df['Other.self']]\n",
"df['interesting.self.dummy'] = [1 if i != 'N' else 0 for i in df['interesting.self']]\n",
"df['Hukou.wanted.dummy'] = [1 if i != 'N' else 0 for i in df['Hukou.wanted']]\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:50:18.807222Z",
"start_time": "2021-10-24T06:50:18.800519Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['id',\n",
" 'Gender.self',\n",
" 'Year.self',\n",
" 'Born.self',\n",
" 'Hukou.self',\n",
" 'Live.self',\n",
" 'Marriage.self',\n",
" 'Height.self',\n",
" 'Weight.self',\n",
" 'Looking.self',\n",
" 'Personality.self',\n",
" 'Edu.self',\n",
" 'Eduno.self',\n",
" 'top.self',\n",
" 'Abroad.self',\n",
" 'Major.self',\n",
" 'Job.self',\n",
" 'Salary.self',\n",
" 'Apt.self',\n",
" 'Family.self',\n",
" 'Hobby.self',\n",
" 'Other.self',\n",
" 'interesting.self',\n",
" 'Gender.wanted',\n",
" 'Year.max.wanted',\n",
" 'Year.min.wanted',\n",
" 'Year.text.wanted',\n",
" 'Hukou.wanted',\n",
" 'Live.wanted',\n",
" 'Marriage.wanted',\n",
" 'Height.min.wanted',\n",
" 'Looking.wanted',\n",
" 'Personality.wanted',\n",
" 'Hobby.wanted',\n",
" 'Edu.min.wanted',\n",
" 'Edu.min.n.wanted',\n",
" 'Job.wanted',\n",
" 'Salary.min.wanted',\n",
" 'Apt.wanted',\n",
" 'Family.wanted',\n",
" 'Other.wanted',\n",
" 'interesting.wanted',\n",
" 'Similar.wanted']"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"['id', 'Gender.self', 'Year.self', 'Born.self', 'Hukou.self',\n",
" 'Live.self', 'Marriage.self', 'Height.self', 'Weight.self',\n",
" 'Looking.self', 'Personality.self', 'Edu.self', 'Eduno.self',\n",
" 'top.self', 'Abroad.self', 'Major.self', 'Job.self', 'Salary.self',\n",
" 'Apt.self', 'Family.self', 'Hobby.self', 'Other.self',\n",
" 'interesting.self', 'Gender.wanted', 'Year.max.wanted',\n",
" 'Year.min.wanted', 'Year.text.wanted', 'Hukou.wanted', 'Live.wanted',\n",
" 'Marriage.wanted', 'Height.min.wanted', 'Looking.wanted',\n",
" 'Personality.wanted', 'Hobby.wanted', 'Edu.min.wanted',\n",
" 'Edu.min.n.wanted', 'Job.wanted', 'Salary.min.wanted', 'Apt.wanted',\n",
" 'Family.wanted', 'Other.wanted', 'interesting.wanted',\n",
" 'Similar.wanted']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 列联表分析"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:56:15.254424Z",
"start_time": "2021-10-24T06:56:15.210277Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Looking.self.dummy | \n",
" 0 | \n",
" 1 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 406 | \n",
" 212 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 222 | \n",
" 34 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 628 | \n",
" 246 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Looking.self.dummy 0 1 All\n",
"Gender.self \n",
"女性 406 212 618\n",
"男性 222 34 256\n",
"All 628 246 874"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Looking.self.dummy'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:56:37.148573Z",
"start_time": "2021-10-24T06:56:37.105086Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Looking.self.dummy | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.656958 | \n",
" 0.343042 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.867188 | \n",
" 0.132812 | \n",
"
\n",
" \n",
" All | \n",
" 0.718535 | \n",
" 0.281465 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Looking.self.dummy 0 1\n",
"Gender.self \n",
"女性 0.656958 0.343042\n",
"男性 0.867188 0.132812\n",
"All 0.718535 0.281465"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Looking.self.dummy'],margins=True, normalize='index')"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:59:38.526237Z",
"start_time": "2021-10-24T06:59:38.508379Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[406, 212], [222, 34]]\n",
"Test Statistic: 38.525189790079125\n",
" p-value: 5.405153041255414e-10\n",
" Degrees of Freedom: 1\n",
"\n",
"[[444.05491991 173.94508009]\n",
" [183.94508009 72.05491991]]\n"
]
}
],
"source": [
"import numpy as np\n",
"from scipy import stats\n",
"\n",
"alist = np.array(pd.crosstab(df['Gender.self'],df['Looking.self.dummy'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:57:38.874823Z",
"start_time": "2021-10-24T06:57:38.836237Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Personality.self.dummy | \n",
" 0 | \n",
" 1 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 371 | \n",
" 247 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 173 | \n",
" 83 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 544 | \n",
" 330 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Personality.self.dummy 0 1 All\n",
"Gender.self \n",
"女性 371 247 618\n",
"男性 173 83 256\n",
"All 544 330 874"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Personality.self.dummy'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T06:58:00.202271Z",
"start_time": "2021-10-24T06:58:00.160745Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Personality.self.dummy | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.600324 | \n",
" 0.399676 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.675781 | \n",
" 0.324219 | \n",
"
\n",
" \n",
" All | \n",
" 0.622426 | \n",
" 0.377574 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Personality.self.dummy 0 1\n",
"Gender.self \n",
"女性 0.600324 0.399676\n",
"男性 0.675781 0.324219\n",
"All 0.622426 0.377574"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Personality.self.dummy'],margins=True, normalize='index')"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:00:23.105353Z",
"start_time": "2021-10-24T07:00:23.087789Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[371, 247], [173, 83]]\n",
"Test Statistic: 4.070440019813376\n",
" p-value: 0.04363990497274837\n",
" Degrees of Freedom: 1\n",
"\n",
"[[384.6590389 233.3409611]\n",
" [159.3409611 96.6590389]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['Personality.self.dummy'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:01:48.574356Z",
"start_time": "2021-10-24T07:01:48.526096Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Edu.self | \n",
" N | \n",
" 中专 | \n",
" 初中 | \n",
" 博士 | \n",
" 大专 | \n",
" 本科 | \n",
" 研究生 | \n",
" 高中 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 74 | \n",
" 3 | \n",
" 1 | \n",
" 4 | \n",
" 47 | \n",
" 278 | \n",
" 207 | \n",
" 4 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 46 | \n",
" 4 | \n",
" 0 | \n",
" 10 | \n",
" 34 | \n",
" 95 | \n",
" 65 | \n",
" 2 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 120 | \n",
" 7 | \n",
" 1 | \n",
" 14 | \n",
" 81 | \n",
" 373 | \n",
" 272 | \n",
" 6 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Edu.self N 中专 初中 博士 大专 本科 研究生 高中 All\n",
"Gender.self \n",
"女性 74 3 1 4 47 278 207 4 618\n",
"男性 46 4 0 10 34 95 65 2 256\n",
"All 120 7 1 14 81 373 272 6 874"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Edu.self'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:02:26.422921Z",
"start_time": "2021-10-24T07:02:26.371978Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Edu.self | \n",
" N | \n",
" 中专 | \n",
" 初中 | \n",
" 博士 | \n",
" 大专 | \n",
" 本科 | \n",
" 研究生 | \n",
" 高中 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.119741 | \n",
" 0.004854 | \n",
" 0.001618 | \n",
" 0.006472 | \n",
" 0.076052 | \n",
" 0.449838 | \n",
" 0.334951 | \n",
" 0.006472 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.179688 | \n",
" 0.015625 | \n",
" 0.000000 | \n",
" 0.039062 | \n",
" 0.132812 | \n",
" 0.371094 | \n",
" 0.253906 | \n",
" 0.007812 | \n",
"
\n",
" \n",
" All | \n",
" 0.137300 | \n",
" 0.008009 | \n",
" 0.001144 | \n",
" 0.016018 | \n",
" 0.092677 | \n",
" 0.426773 | \n",
" 0.311213 | \n",
" 0.006865 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Edu.self N 中专 初中 博士 大专 本科 \\\n",
"Gender.self \n",
"女性 0.119741 0.004854 0.001618 0.006472 0.076052 0.449838 \n",
"男性 0.179688 0.015625 0.000000 0.039062 0.132812 0.371094 \n",
"All 0.137300 0.008009 0.001144 0.016018 0.092677 0.426773 \n",
"\n",
"Edu.self 研究生 高中 \n",
"Gender.self \n",
"女性 0.334951 0.006472 \n",
"男性 0.253906 0.007812 \n",
"All 0.311213 0.006865 "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Edu.self'],margins=True, normalize='index')"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:03:14.977664Z",
"start_time": "2021-10-24T07:03:14.957983Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[74, 3, 1, 4, 47, 278, 207, 4], [46, 4, 0, 10, 34, 95, 65, 2]]\n",
"Test Statistic: 32.566864831926054\n",
" p-value: 3.187587277414393e-05\n",
" Degrees of Freedom: 7\n",
"\n",
"[[ 84.85125858 4.94965675 0.70709382 9.8993135 57.27459954\n",
" 263.74599542 192.32951945 4.24256293]\n",
" [ 35.14874142 2.05034325 0.29290618 4.1006865 23.72540046\n",
" 109.25400458 79.67048055 1.75743707]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['Edu.self'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:04:41.795432Z",
"start_time": "2021-10-24T07:04:41.757324Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Hukou.self | \n",
" N | \n",
" 有上海户口 | \n",
" 没有上海户口 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 293 | \n",
" 290 | \n",
" 35 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 116 | \n",
" 131 | \n",
" 9 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 409 | \n",
" 421 | \n",
" 44 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Hukou.self N 有上海户口 没有上海户口 All\n",
"Gender.self \n",
"女性 293 290 35 618\n",
"男性 116 131 9 256\n",
"All 409 421 44 874"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Hukou.self'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:05:10.881381Z",
"start_time": "2021-10-24T07:05:10.840172Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Hukou.self | \n",
" N | \n",
" 有上海户口 | \n",
" 没有上海户口 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.474110 | \n",
" 0.469256 | \n",
" 0.056634 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.453125 | \n",
" 0.511719 | \n",
" 0.035156 | \n",
"
\n",
" \n",
" All | \n",
" 0.467963 | \n",
" 0.481693 | \n",
" 0.050343 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Hukou.self N 有上海户口 没有上海户口\n",
"Gender.self \n",
"女性 0.474110 0.469256 0.056634\n",
"男性 0.453125 0.511719 0.035156\n",
"All 0.467963 0.481693 0.050343"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Hukou.self'],margins=True, normalize = 'index')"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:05:36.153888Z",
"start_time": "2021-10-24T07:05:36.137371Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[293, 290, 35], [116, 131, 9]]\n",
"Test Statistic: 2.506628461110095\n",
" p-value: 0.28555682567352375\n",
" Degrees of Freedom: 2\n",
"\n",
"[[289.201373 297.68649886 31.11212815]\n",
" [119.798627 123.31350114 12.88787185]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['Hukou.self'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:07:27.876117Z",
"start_time": "2021-10-24T07:07:27.838061Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" top.self | \n",
" N | \n",
" 重点大学毕业 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 470 | \n",
" 148 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 210 | \n",
" 46 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 680 | \n",
" 194 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"top.self N 重点大学毕业 All\n",
"Gender.self \n",
"女性 470 148 618\n",
"男性 210 46 256\n",
"All 680 194 874"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['top.self'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:07:52.683890Z",
"start_time": "2021-10-24T07:07:52.642530Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" top.self | \n",
" N | \n",
" 重点大学毕业 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.760518 | \n",
" 0.239482 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.820312 | \n",
" 0.179688 | \n",
"
\n",
" \n",
" All | \n",
" 0.778032 | \n",
" 0.221968 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"top.self N 重点大学毕业\n",
"Gender.self \n",
"女性 0.760518 0.239482\n",
"男性 0.820312 0.179688\n",
"All 0.778032 0.221968"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['top.self'],margins=True, normalize = 'index')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:08:06.234954Z",
"start_time": "2021-10-24T07:08:06.218357Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[470, 148], [210, 46]]\n",
"Test Statistic: 3.4093710125149688\n",
" p-value: 0.0648271518621084\n",
" Degrees of Freedom: 1\n",
"\n",
"[[480.82379863 137.17620137]\n",
" [199.17620137 56.82379863]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['top.self'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:09:11.820413Z",
"start_time": "2021-10-24T07:09:11.783232Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Abroad.self | \n",
" N | \n",
" Y | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 550 | \n",
" 68 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 232 | \n",
" 24 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 782 | \n",
" 92 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Abroad.self N Y All\n",
"Gender.self \n",
"女性 550 68 618\n",
"男性 232 24 256\n",
"All 782 92 874"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Abroad.self'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:09:26.480175Z",
"start_time": "2021-10-24T07:09:26.438190Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Abroad.self | \n",
" N | \n",
" Y | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.889968 | \n",
" 0.110032 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.906250 | \n",
" 0.093750 | \n",
"
\n",
" \n",
" All | \n",
" 0.894737 | \n",
" 0.105263 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Abroad.self N Y\n",
"Gender.self \n",
"女性 0.889968 0.110032\n",
"男性 0.906250 0.093750\n",
"All 0.894737 0.105263"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Abroad.self'],margins=True, normalize = 'index')"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:09:39.072601Z",
"start_time": "2021-10-24T07:09:39.056631Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[550, 68], [232, 24]]\n",
"Test Statistic: 0.351325749125499\n",
" p-value: 0.5533636134064016\n",
" Degrees of Freedom: 1\n",
"\n",
"[[552.94736842 65.05263158]\n",
" [229.05263158 26.94736842]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['Abroad.self'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:13:25.333267Z",
"start_time": "2021-10-24T07:13:25.295343Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Apt.self | \n",
" N | \n",
" 有房 | \n",
" All | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 385 | \n",
" 233 | \n",
" 618 | \n",
"
\n",
" \n",
" 男性 | \n",
" 76 | \n",
" 180 | \n",
" 256 | \n",
"
\n",
" \n",
" All | \n",
" 461 | \n",
" 413 | \n",
" 874 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Apt.self N 有房 All\n",
"Gender.self \n",
"女性 385 233 618\n",
"男性 76 180 256\n",
"All 461 413 874"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Apt.self'],margins=True)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:13:39.284921Z",
"start_time": "2021-10-24T07:13:39.244306Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Apt.self | \n",
" N | \n",
" 有房 | \n",
"
\n",
" \n",
" Gender.self | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 女性 | \n",
" 0.622977 | \n",
" 0.377023 | \n",
"
\n",
" \n",
" 男性 | \n",
" 0.296875 | \n",
" 0.703125 | \n",
"
\n",
" \n",
" All | \n",
" 0.527460 | \n",
" 0.472540 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Apt.self N 有房\n",
"Gender.self \n",
"女性 0.622977 0.377023\n",
"男性 0.296875 0.703125\n",
"All 0.527460 0.472540"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Gender.self'],df['Apt.self'],margins=True, normalize = 'index')"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:14:07.344002Z",
"start_time": "2021-10-24T07:14:07.326516Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[385, 233], [76, 180]]\n",
"Test Statistic: 75.92908969295243\n",
" p-value: 2.9403634235931047e-18\n",
" Degrees of Freedom: 1\n",
"\n",
"[[325.97025172 292.02974828]\n",
" [135.02974828 120.97025172]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Gender.self'],df['Apt.self'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:23:36.012768Z",
"start_time": "2021-10-24T07:23:35.995071Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[549, 79], [205, 41]]\n",
"Test Statistic: 2.1596107037130725\n",
" p-value: 0.14168058143484263\n",
" Degrees of Freedom: 1\n",
"\n",
"[[541.77574371 86.22425629]\n",
" [212.22425629 33.77574371]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Looking.self.dummy'],df['Looking.wanted.dummy'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:26:15.526929Z",
"start_time": "2021-10-24T07:26:15.509099Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[104, 16], [5, 2], [1, 0], [10, 4], [72, 9], [318, 55], [238, 34], [6, 0]]\n",
"Test Statistic: 6.176235299193836\n",
" p-value: 0.5193287773742754\n",
" Degrees of Freedom: 7\n",
"\n",
"[[1.03524027e+02 1.64759725e+01]\n",
" [6.03890160e+00 9.61098398e-01]\n",
" [8.62700229e-01 1.37299771e-01]\n",
" [1.20778032e+01 1.92219680e+00]\n",
" [6.98787185e+01 1.11212815e+01]\n",
" [3.21787185e+02 5.12128146e+01]\n",
" [2.34654462e+02 3.73455378e+01]\n",
" [5.17620137e+00 8.23798627e-01]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Looking.self.dummy'],df['Looking.wanted.dummy'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 介绍自己容貌者比起不介绍自己容貌的人对户口有要求更明确!"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:28:39.144270Z",
"start_time": "2021-10-24T07:28:39.104232Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Hukou.wanted.dummy | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" Looking.self.dummy | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.890127 | \n",
" 0.109873 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.817073 | \n",
" 0.182927 | \n",
"
\n",
" \n",
" All | \n",
" 0.869565 | \n",
" 0.130435 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Hukou.wanted.dummy 0 1\n",
"Looking.self.dummy \n",
"0 0.890127 0.109873\n",
"1 0.817073 0.182927\n",
"All 0.869565 0.130435"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(df['Looking.self.dummy'],df['Hukou.wanted.dummy'],margins=True, normalize = 'index')"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"ExecuteTime": {
"end_time": "2021-10-24T07:28:07.273806Z",
"start_time": "2021-10-24T07:28:07.257734Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[559, 69], [201, 45]]\n",
"Test Statistic: 7.6855978565757\n",
" p-value: 0.005566323672839524\n",
" Degrees of Freedom: 1\n",
"\n",
"[[546.08695652 81.91304348]\n",
" [213.91304348 32.08695652]]\n"
]
}
],
"source": [
"alist = np.array(pd.crosstab(df['Looking.self.dummy'],df['Hukou.wanted.dummy'],margins=False)).tolist()\n",
"print(alist)\n",
"\n",
"# 卡方检验\n",
"chi2, p, ddof, expected = stats.chi2_contingency( alist )\n",
"msg = \"Test Statistic: {}\\n p-value: {}\\n Degrees of Freedom: {}\\n\"\n",
"print( msg.format( chi2, p, ddof ) )\n",
"print( expected )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.6"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 4
}