In [ ]:
a = [0]
a1 = a * 10
print(str(id(a))+":%s" %(a))
print(str(id(a1)) + ":%s" %(a1))
a2 = a1*10
print(a1)
print(a2)
a3 = [[0 for x in range(10)] for x in range(10)]
print(a3)
In [ ]:
# 函数运行装饰器
def decorate_func_time(func):
from datetime import datetime as dt
def inner(*args, **kwargs):
start = dt.now()
ret = func(*args, **kwargs)
delta = dt.now() - start
print(func.__name__ + ' elapsed time:' + str(delta.microseconds))
return ret
return inner
@decorate_func_time
def func1(num):
a = [[0] * num] * num
print(type(a))
# print(a)
@decorate_func_time
def func2(num):
a = [[0 for x in range(num)] for x in range(num)]
print(type(a))
# print(a)
import numpy as np
@decorate_func_time
def func3(num):
a = np.zeros((num,num))
print(type(a))
func1(100)
func2(100)
func3(100)
In [ ]:
import numpy as np
a = np.arange(10,19).reshape((3,3))
print(a)
print(a[0,:])
print(a[0,:])
print(a[:,0])
print(a[0:,0])
# print(a[:,0])
In [ ]:
# pandas
import pandas as pd
from numpy import log
s = pd.Series([12, -4, 7, 9])
s
S = pd.Series([12, -4, 7, 9], index=['a','b','c','d'])
S
S[['b','c']]
arr = np.array([1,2,3,4])
s3 = pd.Series(arr)
s3
s4 = pd.Series(S)
s4
s4[1] = 100
S
s/2
# np.log(s)
serd = pd.Series([1,0,2,1,2,3], index=['white', 'white', 'blue', 'green', 'green', 'yellow'])
serd
serd.unique() # 去重
# print((serd.isin([0,3])))
serd[serd.isin([0,3])]
s2 = pd.Series([5,-3,np.NaN, 14])
s2.isnull()
# s2.notnull()
# s2[s2.isnull()]
# s2[s2.notnull()]
dict_my = {'red':2000,'blue':1000,'yellow':500,'orange':1000}
myseries = pd.Series(dict_my)
myseries
colors = ['red', 'yellow', 'orange', 'blue', 'green']
myseries = pd.Series(dict_my, index=colors)
myseries
mydict2 = {'red':400,'yellow':1000,'black':700}
myseries2 = pd.Series(mydict2)
myseries + myseries2
In [ ]:
# DataFrame对象
data = {
'color':['blue','green','yellow','red','white'],
'object':['ball', 'pen', 'pencil', 'paper', 'mug'],
'price':[1.2, 1.0, 0.6, 0.9, 1.7]}
frame = pd.DataFrame(data)
fram2 = frame
frame
print(frame)
print("\n")
print(frame.iloc[[2,4]])
print("\n")
print(frame[0:3])
print('\n')
frame2['price'][0] = 100
print(frame2)
print("\n")
print(frame)
print("\n")
frame.index.name = 'id'
frame.columns.name = 'item'
print(frame)
print("\n")
frame['new'] = [3.0, 1.3, 2.2, 0.8, 1.1]
print(frame)
# 只选择感兴趣的数据,columns选择指定需要的列
frame2 = pd.DataFrame(data, columns=['object', 'price'])
frame2
# 指定数组标签
frame2 = pd.DataFrame(data, index=['one','two','three','four','five'], columns=['object', 'price'])
frame2
frame2.columns
frame2.index
print("\n")
ser = pd.Series(np.arange(5))
frame['new'] = ser
print(frame)
In [ ]:
mat = [[1, 2, 3], [4, 5, 6]]
ret = (zip(*mat))
a = "hello world!"
ret = a[::-1]
print(ret)
print(a[:2:-1])
a = [1,2,3]
x,y,z = a
x
l = ["i", "want", "this", "one"]
ret = " ".join(l)
print(ret)
a = 7
b = 5
a,b = b, a
print(a)
print(b)
In [ ]:
#
import numpy as np
import pandas as pd
data = np.genfromtxt('monthly_csv.csv', delimiter=',', names=True)
data
In [147]:
####################################################################
#
# 命名元组
# Namedtuples
# 解决的两个问题:namedtuples和常规元组一样,它的内容是不可改变的
# 命名元组也是命名的元组,可以通过唯一的标识符来访问存储在其中的对象
# 有更好的结构化数据,增强代码的可读性
#
# 注意事项:
# collection.namedtuple,是一个自定义的不可修改的类的快捷方式,但是更节约内存
# 命名元组通过更容易让人理解的方式结构化数据,使代码更干净整洁
# 命名元组提供了一些十分有用的以下划线开头的帮助函数
#
####################################################################
# 普通元组
tup = ('hello', object(), 42)
tup
tup[2]
# tup[2] = 23 报错:'tuple' object does not support item assignment
# 命名元组
from collections import namedtuple
Car = namedtuple('Car', 'color mileage')
# 默认命名元组的工厂函数会在字段字符串后默认调用split()函数
# 对字段进行拆解,等同于
# 'color mileage'.split() ==> ['color', 'mileage']
# Car = namedtuple('Car', ['color', 'mileage'])
Car = namedtuple('Car',[
'color',
'mileage'
])
my_car = Car('red', 3812.4)
my_car.color
color, mileage = my_car # 元组的解包以及带有*函数参数的解包也可以正常工作
print(color, mileage)
print(*my_car) # 命名元组中元组的即可以通过ID来访问
my_car[0] # 通过其索引来访问
tuple(my_car)
my_car # 命名元组的输出甚至可以是一个标尊的字符串表达式
# 在Python内部,命名元组是通过一个常规的类对象实现的。
# 但是在内存使用效率上比常规类要高,和正常元组一样。
# 可以看作一个自定义的不可修改的类的快捷方式,更节约内存
# 由于命名元组是在常规类的基础上构建的
# 所以可以添加方法到命名元组的类中
Car = namedtuple('Car', 'color mileage')
class MyCarWithMethods(Car):
def hexcolor(self):
if self.color == 'red':
return '#ff0000'
else:
return '#000000'
c = MyCarWithMethods('red', 1234)
c.hexcolor()
# 使用基本元组的._field属性,新增一个不可改变的字段
Car = namedtuple('Car', 'color mileage')
# 新增charge属性
ElectricCar = namedtuple('ElectricCar', Car._fields + ('charge',))
ElectricCar('red', 1234, 45.0)
ElectricCar(color='red', mileage=1234, charge=45.0)
my_elec_car = ElectricCar('blue', 111, 5000)
my_elec_car.charge
# 内置帮助函数
my_car._asdict() # 返回命名元组中存储的元素
import json
json.dumps(my_car._asdict()) # 输出json样式
my_car._replace(color='yellow') # _replace函数,进行字段的选择性替换
Car._make(['red', 999]) # _make函数,可以用来在序列或者迭代中创建一个新的命名元组实例
Out[147]:
In [ ]: