学习大数据的第43天(python篇)——学习python第3天 Python的科学计算生态圈
NumPy 处理一些多维矩阵Numpy
Scipy library 主要是积分运算,优化以及图形
Matplotlib 画图(二维图形)
IPython
Sympy 用的不多
pandas 主要是数据分析,数据处理(比较重要)数据清洗,提供比较好的数据结构
Dataframe (spark中也有)
Numpy 是一个专门用于矩阵化运算,科学计算的开源Python基本的数据结构(ndarray)
? 强大的ndarray的多维数组结构
? 成熟的函数库
? 用于整合C/C++和Fortran代码的工具包
? 实用的线性代数,傅里叶变换和随机数模块
? Numpy和稀疏矩阵运算包scipy配合使用非常 方便
import numpy as np
# numpy# 安装:pip install numpyimport numpy as npdata = https://tazarkount.com/read/[[1, 2, 3],[4, 5, 6]]np_arr = np.array(data)print(np_arr, type(np_arr))# jupyter notebook# 安装:pip install jupyter notebook# 若需要登录的时候,直接将token值输入即可# 使用:jupyter notebook# np_arr.astype()print(np_arr[:,1])print(np.split(np_arr,2))print(np_arr.reshape(3,2))print(np_arr+np_arr)print(np_arr-np_arr)/print(np_arr*np_arr)print(np_arr/np_arr) Pandas数据分析(对数据清洗加工) pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数series(一列数据)
主要用于做数据分析的
与Numpy对比:
Numpy主要是对数字进行分析,而pandas主要对数据进行处理加工,有独特的数据结构
(1)series(Series是一种类似于一维数组的对象,由数据(各种NumPy数据 类型)以及与之相关的数据标签(即索引)组成 )
(2)dataframe(二维结构的表)
# Serise# 安装命令 pip install pandasimport pandas as pddata = https://tazarkount.com/read/[1, 2, 3, 4, 5]series1 = pd.Series(data)print(series1, type(series1))'''输出结构:索引结果值0112233445'''# 获取下标为0 的数据print(series1[0])data1 = {1: "python",2: "java",3: "scala"}series2 = pd.Series(data1, index=[1, 2])print(series2, type(series2))'''输出结果,下表不固定1python2java3scala如果创建Series时,根据固定Key进行取值,输出结果:series2 = pd.Series(data1, index=[1, 2])1python2java'''print(series2.min())print(series2.max()) dataFrame(多个series组成,通过索引进行关联) DataFrame是一个表格型的数据结构,它含有一组有序的列,每 列可以是不同的值类型(数值、字符串、布尔值等)dataframe的创建 (1)通过字典创建dataframe
DataFrame既有行索引也有列索引,可以看做由Series组成的字 典
data2 = {"Language": ["python", "java", "scala", "sql"],"application": ["pySpark", "Hadoop", "Spark", "Hive"]}df1 = pd.DataFrame(data=https://tazarkount.com/read/data2)print(df1, type(df1))'''输出结果:Language application0pythonpySpark1javaHadoop2scalaSpark3sqlHive''' (2)通过列表创建dataframe data3 = [["java", "1"], ["python", "2"], ["scala", "3"]]# 可以指定列名称df2 = pd.DataFrame(data=https://tazarkount.com/read/data3, columns=["language", "year"])print(df2, type(df2))'''language year0java11python22scala3''' (3)创建一列数据 # 创建一列数据data4 = [[1], [2], [3]]df3 = pd.DataFrame(data=https://tazarkount.com/read/data4)print(df3, type(df3)) dataframe的常用操作 (1)删除一列数据 注意:axis默认为0,删除的时一行数据,若想删除一列数据,必须改为1 # 删除data3中的year# axis 默认为0,删除一行,改为1 删除一列df4 = df2.drop(labels=["year"], axis=1)print(df4)print(df2) (2)使用implace属性,更改原本的数据 df5 = df2.drop(labels=["year"], axis=1, inplace=True)print(df2) (3)获取数据 a.通过名称[属性名],进行获取 # 通过列进行取值,取出之后依旧是个Seriesprint(df1["application"], type(df1["application"]))'''输出结果:0pySpark1Hadoop2Spark3HiveName: application, dtype: object ''' b.通过.+列名进行获取数据 # 获取数据的第二种方式# 通过.+列名进行获取数据print(df1.Language, type(df1.Language)) c.另外的方法 # 如何获取一行数据# 默认取固定下标的数据print(df1.loc[0])# 默认从前取5行数据print(df1.head())# 默认从后取5行数据print(df1.tail()) d.获取指定的数据 print(">>" * 30)data5 = {"name": ["张老师", "王同学", "李同学"],"age": [24, 18, 19]}df6 = pd.DataFrame(data=https://tazarkount.com/read/data5)print(df6)# 获取age大于20 的数据print(df6[df6["age"] < 20]) e.若想要获取一个int类型的数据的汇总方法 # 汇总print(df6.describe())'''输出结果:agecount3.000000mean20.333333std3.214550min18.00000025%18.50000050%19.00000075%21.500000max24.000000''' Datafram其他的函数方法pandas提供一个读取文件的一些函数操作 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,常用的函数为read_csv和read_table
函数的选项可以划分为几个大类
索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名
类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等
日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合起来
迭代:支持对大文件进行逐块迭代
不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西
# 通过pandas读取csv文件df7 = pd.read_csv("G:\MyPythonprojects\pythonProject\data\students.txt")print(df7) read_csv/read_table常用参数介绍:Pandas的查询数据操作 jupyter notebook 上的一些操作 【python篇 学习大数据的第43天——学习python第3天】
path :表示文件系统位置、URL、文件型对象的字符串sep/delimiter:用于对行中个字段进行拆分的字符序列或正则表达式
header:用做列名的行号 。默认为0(第一行),若无header行,设为Nonenames:用于结果的列名列表,结合header=Noneskiprows: 需要忽略的行数
na_values:一组用于替换NA的值
nrows:需要读取的行数(从文件开始处算起)
verbose:打印各种解析器信息,比如“非数值列中缺失值的数量”
encoding:用于unicode的文本格式编码 。例如,“utf-8”表示用UTF-8 编码的文本
# 导入pandas包进行创建对象import pandas as pd# 读取指定位置的文件数据df = pd.read_csv("G:\MyPythonprojects\pythonProject\data\students.txt", names=["id", "name", "age", "gender", "clazz"])# 获取前一百行df.head(100)# 需求统计班级下的人数# count输出结果df.groupby("clazz")["id"].count()
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
