数据分析工具之numpy、pandas & jupyter notebook基本使用

x33g5p2x  于2021-09-19 转载在 其他  
字(3.7k)|赞(0)|评价(0)|浏览(334)

安装

命令行使用命令: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]:

PythonJavaJavaScript
圈圈1877896
圈圈2812611
圈圈3277965
圈圈4989743
圈圈5323576
计算每个人的平均分

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]:

PythonJavaJavaScript平均分
圈圈187789687.000000
圈圈281261139.333333
圈圈327796557.000000
圈圈498974379.333333
圈圈532357647.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')])

生成的图表:

相关文章