学习大数据的第43天(python篇)——学习python第3天

学习大数据的第43天(python篇)——学习python第3天

Python的科学计算生态圈

NumPy 处理一些多维矩阵

Scipy library 主要是积分运算,优化以及图形

Matplotlib 画图(二维图形)

IPython

Sympy 用的不多

pandas 主要是数据分析,数据处理(比较重要)数据清洗,提供比较好的数据结构

Dataframe (spark中也有)

Numpy

Numpy 是一个专门用于矩阵化运算,科学计算的开源Python

​ 强大的ndarray的多维数组结构

​ 成熟的函数库

​ 用于整合C/C++和Fortran代码的工具包

​ 实用的线性代数,傅里叶变换和随机数模块

​ Numpy和稀疏矩阵运算包scipy配合使用非常 方便

基本的数据结构(ndarray)

import numpy as np

# numpy
# 安装:pip install numpy

import numpy as np

data = [
    [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提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数

主要用于做数据分析的

与Numpy对比:

Numpy主要是对数字进行分析,而pandas主要对数据进行处理加工,有独特的数据结构

(1)series(Series是一种类似于一维数组的对象,由数据(各种NumPy数据 类型)以及与之相关的数据标签(即索引)组成 )

(2)dataframe(二维结构的表)

series(一列数据)
# Serise

# 安装命令 pip install pandas

import pandas as pd

data = [1, 2, 3, 4, 5]
series1 = pd.Series(data)

print(series1, type(series1))
'''
输出结构:索引  结果值
    0    1
    1    2
    2    3
    3    4
    4    5
'''
# 获取下标为0 的数据
print(series1[0])

data1 = {
    1: "python",
    2: "java",
    3: "scala"
}

series2 = pd.Series(data1, index=[1, 2])

print(series2, type(series2))

'''
输出结果,下表不固定
    1    python
    2      java
    3     scala
如果创建Series时,根据固定Key进行取值,输出结果:
series2 = pd.Series(data1, index=[1, 2])
    1    python
    2      java
'''

print(series2.min())
print(series2.max())
dataFrame(多个series组成,通过索引进行关联)

DataFrame是一个表格型的数据结构,它含有一组有序的列,每 列可以是不同的值类型(数值、字符串、布尔值等)

DataFrame既有行索引也有列索引,可以看做由Series组成的字 典

dataframe的创建

(1)通过字典创建dataframe
data2 = {
    "Language": ["python", "java", "scala", "sql"],
    "application": ["pySpark", "Hadoop", "Spark", "Hive"]
}

df1 = pd.DataFrame(data=data2)
print(df1, type(df1))

'''
输出结果:
      Language application
    0   python     pySpark
    1     java      Hadoop
    2    scala       Spark
    3      sql        Hive
'''
(2)通过列表创建dataframe
data3 = [["java", "1"], ["python", "2"], ["scala", "3"]]

# 可以指定列名称
df2 = pd.DataFrame(data=data3, columns=["language", "year"])

print(df2, type(df2))

'''
language year
0     java    1
1   python    2
2    scala    3
'''
(3)创建一列数据
# 创建一列数据

data4 = [[1], [2], [3]]
df3 = pd.DataFrame(data=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.通过名称[属性名],进行获取
# 通过列进行取值,取出之后依旧是个Series
print(df1["application"], type(df1["application"]))

'''
输出结果:
0    pySpark
1     Hadoop
2      Spark
3       Hive
Name: application, dtype: object <class 'pandas.core.frame.DataFrame'>
'''
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=data5)

print(df6)

# 获取age大于20 的数据
print(df6[df6["age"] < 20])
e.若想要获取一个int类型的数据的汇总方法
# 汇总
print(df6.describe())
'''
输出结果:
             age
count   3.000000
mean   20.333333
std     3.214550
min    18.000000
25%    18.500000
50%    19.000000
75%    21.500000
max    24.000000
'''
Datafram其他的函数方法
image-20220327211754829

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常用参数介绍:

path :表示文件系统位置、URL、文件型对象的字符串

sep/delimiter:用于对行中个字段进行拆分的字符序列或正则表达式

header:用做列名的行号。默认为0(第一行),若无header行,设为None
names:用于结果的列名列表,结合header=None

skiprows: 需要忽略的行数
na_values:一组用于替换NA的值
nrows:需要读取的行数(从文件开始处算起)
verbose:打印各种解析器信息,比如“非数值列中缺失值的数量”

encoding:用于unicode的文本格式编码。例如,“utf-8”表示用UTF-8 编码的文本

Pandas的查询数据操作

jupyter notebook 上的一些操作
# 导入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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数是一段封装了特定功能的代码块,可以重复调用。无论是编写程序还是解决问题,函数都是非常重要的工具。了解并熟练使用函数对于精通Python的基础来说十分重要。 在Python中,函数的定义以关键字"def"开头,后面是函数的名称和参数列表。参数列表用于接收调用函数时传递的参数。在函数体内部,通过缩进来组织函数代码,并使用return语句返回函数的结果。 函数的优势体现在以下几个方面: 1. 代码的重用性:可以将一段常用的代码封装成函数,以便在其他地方重复使用,提高了代码的可读性和可维护性。 2. 简化程序结构:函数可以将复杂的问题分解为多个简单的小问题,使程序结构更加清晰,易于理解和修改。 3. 提高代码的可测试性:函数是模块化的单元,可以独立测试和验证,减少了程序出错的可能性。 在编写函数时,要注意以下几点: 1. 函数名称要有意义,能够表达函数的功能。 2. 参数列表可以根据需要进行定义,可以有多个参数,也可以没有参数。 3. 函数的代码要尽量简洁、清晰,避免冗余和重复的部分。 4. 在函数内部,可以使用局部变量来保存中间结果,避免对全局变量的过多依赖。 总之,函数是编程中不可或缺的组成部分,掌握了函数的使用,就掌握了解决问题的利器。在后续的学习中,我们将进一步学习函数的高级应用,如函数的递归调用、函数的参数传递等。通过不断的实践和练习,相信不久的将来,我们就能够精通Python的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值