python大数据基础与应用(北理慕课摘记)

文章目录

  • python基础
    • 内置数据类型
      • python特点:
      • 基本内置类型对象
    • 内置数据结构(如何组织)
      • 序列
      • 集合
      • 映射
    • 拓展数据类型
      • np.ndarray类型数据对象
        • 基本属性 ndim shape dtype Itemsize size
        • 基本方法
      • Pandas.Series类型数据对象
      • Pandas.DataFrame类型数据对象
  • 数据分析方法
  • 开源平台与工具

python基础

内置数据类型

python特点:

弱数据类型、面向对象

基本内置类型对象

int 理论上无范围限制

#二、八、十、十六进制:0b1001、0o11、9、0x9
a = 0b1001
bin(a) #二进制输出,不使用类型转换使默认十进制
oct(a) #八
hex(a) #十六

float 无double类型

#50.0 == 50. == 5e1
#输出该PC支持的浮点范围与精度
import sys
print(sys.float_info)

complex 复数类型
3+4j

c = 3+4j
print("实部={},虚部={}".format(c.real, c.imag))

bool int的子类 多数空序列结构会被判定为False

#True==1 False==0
print(True+True) #结果为2

str 使用Unicode编码 属不可变类型

s = "大数据基础"
len(s) #返回字符个数而非内码占内存字节数
g = s.encode('gbk') #使用其他编码格式
len(g) #结果为10,表明py中其它编码格式是字节串而非字符串
s = '汉'
ord(s) #返回Unicode序号
chr(27721) #返回Unicode序号对应字符
s = '''Dear passenger:
  May I ...'''
#三引号为原排版输出,可包含换行
s[begin:end:step] #指出开始与结束端,以左闭右开(包含begin,不含end)为原则,按一定步长切片,步长为负表示从开始向左切
arr2d = np.arange(20).reshape((4, 5))
arr2d[:2:-2, 1::-2] #结果为16

相同值字符串指向同一内存空间,id()获取内存地址编号

s1 = "abc"
s2 = "abc"
print(id(s1) == id(s2))

常用方法

type(a) #返回特定对象数据类型
dir(str) #返回特定对象类型方法与属性
help(str.upper) #返回特定方法描述符

输入与输出

s = input("prompt") #从stdin以字符串格式输入
s = eval(input("prompt")) #取出串内表达式
name = "Donald"
print("{0:}'s income is {amount:$^10,.1f} per month.".format(name, amount=12345.67), end='')
#字符串format方法使用槽slot{:}进行格式化,’:‘前对应参数位置;后进行格式控制,依次为填充符、对齐方式、宽度、三分位逗号、小数精度、类型
#print函数默认回车结尾,使用第二个参数更改结束分隔符

内置数据结构(如何组织)

序列

tuple list str

#列表推导式生成
s = "123abc456def"
s1 = [c for c in s if c.isdigit()]
#增删
s1.append('7')
s1.remove('1') #仅删除第一个元素
#判断成员关系in ,not in
'7' in s1
#排序,改变原列表,key为比较器函数
s1.sort(key, reverse)
#判等基于值比较,is基于内存位置
s1 = s2 = "abc"
list(s1) == list(s2) #True
list(s1) is list(s2) #False

tuple使用

#多返回值
def foo(x):
	return x, x**3
#多变量同步赋值
a, b = 'cat', 'dog'
a, b = (b,a)
#循环遍历
for x, y in ((1, 0), (2, 5)):

集合

set 集合要求元素可hash,即不可变元素

hash("hello")

映射

dict 字典要求键可hash,即不可变元素

#推导式生成
{name:score for name, score in stuInfo.items() if score > 90}
#for in遍历
for k, v in D.items():
	print(k+":"+v)

拓展数据类型

np.ndarray类型数据对象

构造函数为numpy.array()
numpy中的数组为连续存储,随机访存效率高于py内置的list(链表)

import numpy as np
arr = np.arange(10) #生成从0开始n个整数的数组

自定义数组元素数据类型dtype

#numpy.dtype(object, align, copy)
student = np.dtype([('name', 'S20'), ('age', 'u1'), ('marks', ')])
#结构化object使用元组数组,类似sql以属性名,属性类型定义
#格式:大小端存储'<','>' 类型 占用内存字节大小 
#常见类型:f2/4/8/16 i1/2/4/8 u1/2/4/8 S/U20 o
data = [('Diego', 12, 90), ('Eugene', 40, 75)]
arr = np.array(data, dtype = student)
#常用生成函数
np.zeros()
np.ones()
np.arange()
np.empty()

基本属性 ndim shape dtype Itemsize size

ndim数组维度
shape每维度的数量
Itemsize表示单元素占内存字节
size表示数组元素个数

基本方法

reshape() resize()

#reshape()生成拷贝 resize()重塑原数组
arr2d = np.arange(15).reshape(3, 5)

flatten()降为一维
tolist()转为py内置list

Pandas.Series类型数据对象

使用np.ndarray构建的具有相互关联的主数组与索引数组的长度固定且有序的字典

#一般创建方法
pd.Series(4, index=list("abc"))
#使用字典创建时没有数据补NaN,没有索引则删除
pd.Series({'e':5, 'b':3, 'f':4}, index = ['a', 'b', 'e'])

Pandas.DataFrame类型数据对象

用于表示矩阵数据
可理解为共享相同行索引的Series字典

#构建 字典的key作为列索引
import pandas as pd
data = {'name':['Diego', 'Anna', 'Eugene'],
		'gender':['M', 'F', 'M'],
		'age':[12, 23, 34]}
df = pd.DataFrame(data)
#嵌套字典构建时外层键作列索引,内层键作行索引
data = {'name':[1:'Diego', 2:'Anna', 3:'Eugene'],
		'gender':[1:'M', 2:'F'],
		'age':[1:12, 2:23, 3:34]}
df = pd.DataFrame(data)
#使用ndarray构建
df = pd.DataFrame(np.arange(9).reshape(3, 3), index = ['a', 'b', 'c'], columns = ['one', 'two', 'three'])
#筛选前5行
df.head()
#筛选列 结果为Series对象
df['name']
#筛选行 结果为Series对象
df.loc[3]
#重新构建索引 缺失值默认用NaN填充,可用fill_value指定填充值
df.reindex(index=['a','b','c'], columns=['one','two','three'])
#索引类型对象 只读型容器
labels = df.index
labels = df.columns

数据分析方法

开源平台与工具

你可能感兴趣的:(python,big,data,开发语言)