数据分析工具之numpy、pandas & jupyter notebook基本使用
安装
命令行使用命令:pip install numpy pandas 、pip install jupyter jupyterlab安装第三方库
jupyter notebook 与jupyterlab 使用方式大同小异。本文只分享jupyter notebook的使用
使用
cd至想要保存生成文件的目标路径后使用如下命令:jupyter notebook后会自动使用默认浏览器打开网页(显示该路径下的所有文件)。如无法自动跳转则需要配置:命令行使用:jupyter notebook --generate-config
复制其路径使用记事本打开该文件,查找(ctrl + f) c.NotebookApp.password =
在配置文件的这句后面添加:
import webbrowser
webbrowser.register(“chrome”,None,webbrowser.GenericBrowser(u"C:\Program Files(x86)\Google\Chrome\Application\chrome.exe"))
c.NotebookApp.browser = “chrome”
若为其他浏览器则将Chrome替换为相应的浏览器(如:“QQ浏览器”),相应的路径也替换为对应浏览器的安装路径(.exe)
* ?获取“*”帮助
import random
random?
魔法指令
%ls
运行时间效率
%timeit [1,2,3,4,5]
48.9 ns ± 1.95 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit (1,2,3,4,5)
7.1 ns ± 0.434 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
查看魔法指令
%lsmagic
Available line magics:
%alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cd %clear %cls %colors %conda %config %connect_info %copy %ddir %debug %dhist %dirs %doctest_mode %echo %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %macro %magic %matplotlib %mkdir %more %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %ren %rep %rerun %reset %reset_selective %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
Available cell magics:
%%! %%HTML %%SVG %%bash %%capture %%cmd %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
Automagic is ON, % prefix IS NOT needed for line magics.
系统命令
打开记事本
!notepad
打开计算器
!calc
快捷键
按esc键退出编辑进入命令模式,按h以查看所有快捷命令:
公式编辑
格式:$ $ 公式体 $$
例:
总体标准差:
$ $ \sigma = \sqrt {\frac {\sum { (x_i - \mu)^2}} {n}} $$
样本标准差:
$ $ S = \sqrt {\frac {\sum{ (x_i - \bar{x})^2}} {n - 1}} $$
运行后:
import random
names = ['圈圈1','圈圈2','圈圈3','圈圈4','圈圈5']
courses = ['Python','Java','JavaScript']
scores = [[random.randint(10,100) for _ in range(3)] for _ in range(5)]
生成二维数组
In [2]:
import numpy as np
scores = np.array(scores)
scores
Out[2]:
array([[87, 78, 96],
[81, 26, 11],
[27, 79, 65],
[98, 97, 43],
[32, 35, 76]])
求指定轴平均值
水平方向为1轴,垂直方向为0轴 使用:例: scores.mean(axis = 1) --> 求水平方向所有均值
In [3]:
np.round(scores.mean(axis=1),2)
Out[3]:
array([87. , 39.33, 57. , 79.33, 47.67])
Pandas
Pandas(pandas data set) 提供了‘series’、‘DataFrame’、‘Index’三种核心数据类型,掐年两个分别用于处理以为和二维的数据后者为它们提供索引服务
In [4]:
import pandas as pd
df = pd.DataFrame(data = scores,columns=courses,index = names)
df
Out[4]:
Python | Java | JavaScript | |
---|---|---|---|
圈圈1 | 87 | 78 | 96 |
圈圈2 | 81 | 26 | 11 |
圈圈3 | 27 | 79 | 65 |
圈圈4 | 98 | 97 | 43 |
圈圈5 | 32 | 35 | 76 |
计算每个人的平均分
In [5]:
df.mean(axis = 1)
Out[5]:
圈圈1 87.000000
圈圈2 39.333333
圈圈3 57.000000
圈圈4 79.333333
圈圈5 47.666667
dtype: float64
将平均分作为新的列加到原来的表中
In [6]:
df['平均分'] = df.mean(axis = 1)
df
Out[6]:
Python | Java | JavaScript | 平均分 | |
---|---|---|---|---|
圈圈1 | 87 | 78 | 96 | 87.000000 |
圈圈2 | 81 | 26 | 11 | 39.333333 |
圈圈3 | 27 | 79 | 65 | 57.000000 |
圈圈4 | 98 | 97 | 43 | 79.333333 |
圈圈5 | 32 | 35 | 76 | 47.666667 |
In [35]:
!pip install openpyxl
Looking in indexes: https://pypi.doubanio.com/simple
Requirement already satisfied: openpyxl in d:\programs\python\python38\lib\site-packages (3.0.7)
Requirement already satisfied: et-xmlfile in d:\programs\python\python38\lib\site-packages (from openpyxl) (1.1.0)
将上述表格写入Excel文件
必须先使用系统命令!pip install openpyxl安装:openpyxl
In [36]:
df.to_excel('成绩表.xlsx')
生成指定图表
obj.plot(kind = ‘图表类型’)
解决图标中中文显示问题
git (回到桌面git bash here)命令: notepad ~/.matplotlib/fontlist-v330.json 以记事本打开该文件查找可显示中文字体的字体名称
In [7]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ["STFangsong",] # 添加中文字体
plt.rcParams['axes.unicode_minus'] = False
调整清晰度:显示为矢量图
In [9]:
%config InlineBackend.figure_format = 'svg'
这句还是相当有必要的,不设置图表画质相当低
生成柱状图
In [10]:
df.plot(kind = 'bar')
# 调整x坐标使其横向显示名字
plt.xticks(rotation = 0)
Out[10]:
(array([0, 1, 2, 3, 4]),
[Text(0, 0, '圈圈1'),
Text(1, 0, '圈圈2'),
Text(2, 0, '圈圈3'),
Text(3, 0, '圈圈4'),
Text(4, 0, '圈圈5')])
生成的图表: