Python数据分析例题

Part 1

task 1

任务1: 在 Python 中使用列表数据结构并向两个列表中分别输入表 1中的指数名称和收盘价。同时,在包含指数名称的列表中,依次访问“富时 100 指数”“沪深 300 指数”这两个元素;在包含收盘价的列表中,依次找出“15437.5100”“28458.4400”这两个元素的索引值。

#创建股票数据列表
s_names=['道琼斯工业平均指数','富时100指数','法兰克福DAX指数','巴黎CAC40指数','日经225指数','恒生指数',
'沪深300指数']
s_price=[34207.8398,7018.0500,15437.5100,6386.4100,28317.8300,28458.4400,5134.1483]
​
#查找索引
​
print(s_names.index('沪深300指数'),s_names.index('富时100指数'),s_price.index(15437.5100),s_price.index(28458.4400))
​
6 1 2 5

建立字典更方便。或者使用二位列表。

# 创建股票数据字典
stocks_price={'道琼斯工业平均指数':34207.8398,'富时100指数':7018.0500,'法兰克福DAX指数':15437.5100, '巴黎CAC40指数':6386.4100,
             '日经225指数':28317.8300,'恒生指数':28458.4400,'沪深300指数':5134.1483}
stocks_price
print(stocks_price['富时100指数'])
​
7018.05

task2

当完成任务1 以后,你突然发现遗漏了表2 中的 4 个重要股票指数,因此需要将表2中的这些新信息依次添加至任务1 已创建的两个列表中,并且新增的元素依次放置在列表的尾部。

在Python中对列表使用修改、添加、删除元素的操作的方法有 1.根据索引修改列表元素 2.添加元素可以使用append函数在列表末尾添加,也可以使用insert函数在指定位置添加 3.删除元素的方法:使用del语句删除元素(前提是知道元素的位置);使用pop函数从栈顶弹出元素,默认弹出末尾元素,也可以指定位置; 4.根据值删除元素(已知值的前提下)

#在末尾添加新的股票信息
s_names.append('多伦多综指')
s_names.append('海峡时报指数')
s_names.append('首尔综指')
s_names.append('台湾加权指数')
print(s_names)
​
s_price.append(19527.1008)
s_price.append(3117.8900)
s_price.append(3156.4200)
s_price.append(16302.0596)
print(s_price)
['道琼斯工业平均指数', '富时100指数', '法兰克福DAX指数', '巴黎CAC40指数', '日经225指数', '恒生指数', '沪深300指数', '多伦多综指', '海峡时报指数', '首尔综指', '台湾加权指数']
[34207.8398, 7018.05, 15437.51, 6386.41, 28317.83, 28458.44, 5134.1483, 19527.1008, 3117.89, 3156.42, 16302.0596]

task3

任务3: 当完成任务 2 以后,B 公司出台针对“优势全球配置指数”的新编制指引,要求不再跟踪“法兰克福 DAX 指数”和“巴黎 CAC40 指数”,而改为跟踪“欧元区斯托克 50 指数”。对此,你需要在任务 2 的编程基础上,删除相应的指数名称与对应的收盘价,并且在两个列表中索引值均是 2 的位置分别插入“欧元区斯托克 50 指数”以及对应的收盘价 4025.7800 点。

#使用remove函数删除指定值

s_names.remove('法兰克福DAX指数')
s_names.remove('巴黎CAC40指数')

del s_price[2]
del s_price[3]
#insert
s_names.insert(2,'欧元区斯托克50指数')
s_price.insert(2,4025.7800)
print(s_names)
print(s_price)

['道琼斯工业平均指数', '富时100指数', '欧元区斯托克50指数', '日经225指数', '恒生指数', '沪深300指数', '多伦多综指', '海峡时报指数', '首尔综指', '台湾加权指数']
[34207.8398, 7018.05, 4025.78, 6386.41, 28458.44, 5134.1483, 19527.1008, 3117.89, 3156.42, 16302.0596]

task4

你希望查看指数的大小关系,因此需要针对包含收盘价的列表,将元素先由小到大排列,然后由大到小排列。最后,你因一时疏忽删除了收盘价列表中的全部元素。

#价格由小到大排序
s_price.sort()
print(s_price)
s_price.sort(reverse=True)
print(s_price)
s_price.clear()
print(s_price)
[3117.89, 3156.42, 4025.78, 5134.1483, 6386.41, 7018.05, 16302.0596, 19527.1008, 28458.44, 34207.8398]
[34207.8398, 28458.44, 19527.1008, 16302.0596, 7018.05, 6386.41, 5134.1483, 4025.78, 3156.42, 3117.89]
[]

part2

task1

运用 Python 中的 lambda 函数自定义一个计算变量样本的算术平均值的函数,并且运用该函数依次计算 2021 年 5 月 10 日至 28 日期间 3 个月期 Shibor 、 3 个月期美元 Libor 以及 3 个月期Euribor 的平均值。

注:在Python中lambda函数的结构为:

lambda [arg1 [,arg2,.....argn]]:expression
冒号:左边arg1~argn是传入参数,可以传入多个值,也可以添加默认值,跟正常函数一样,冒号:右边是expression,参数的表达式。表达式中出现的参数需要在:左边中有定义,注意: 表达式只能是单行
#使用def语句定义函数
def sum(arg1, arg2):
   total = arg1 + arg2
   return total
 
sum(10, 20)

30

使用lambda定义匿名函数

lambda arg1, arg2: arg1 + arg2  # arg1, arg2可以传入默认值

调用lambda函数的方法
1.赋值法;
2.把lambda用括号括起来,在后面写上参数
3.作为参数传入其他函数
4.lambda函数作为返回值
#1.通过赋值调用lambda函数
#例如计算字符串单词数量
f=lambda str:len(str.split())

f=('Marx')

#2.加括号
(lambda str:len(str.split()))('hello world')
#3.作为参数传入其他函数
#例如
list=['marx','hello world','jupyter']
list.sort(key=lambda str:len(str.split()))
#4.lambda函数作为返回值
def f(a,b,c):
    return lambda x:a*x**2+b*x+c
g=f(3,2,1)
g(3)

34

使用map函数进行科学计算,结合map和lambda函数进行科学计算 map函数语法结构为:

def square(x) :            # 计算平方数
  return x ** 2
 
map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
 map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

# 提供了两个列表,对相同位置的列表数据进行相加
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

#解题
#创建列表
shibor_3m=[0.02542,0.02536,0.02532,0.02525,0.02521,0.02514,0.0251,0.02505,0.02497,0.02489,0.0249,
           0.02485,0.02479,0.02474,0.02476]
libor_3m=[0.001675,0.001603,0.0016541,0.001559,0.001551,0.001496,0.001553,0.001493,0.001501,0.00147,
          0.001409,0.001385,0.00135,0.001346,0.001314]
euribor_3m=[-0.005330,-0.005330,-0.005390,-0.005410,-0.005490,-0.005480,-0.005530,-0.005520,-0.005450,
            -0.005430,-0.005420,-0.005380,-0.005370,-0.005400,-0.005430]

mean_by=lambda x:sum(x)/len(x)

mean_shibor=mean_by(x=shibor_3m)
mean_libor=mean_by(x=libor_3m)
mean_euribor=mean_by(x=euribor_3m)
print(mean_shibor,mean_libor,mean_euribor)
    

0.025049999999999996 0.001490606666666667 -0.005424

通过计算求出SHIB0R、libor、euribor的值分别为:0.025049999999999996 0.001490606666666667 -0.005424

task2

运用 Python 的 def 语法并结合 for 语句自定义一个计算变量波动率的函数,同时运用该函数分别计算 3 个月期 Shibor 、 3 个月期美元 Libor 以及 3 个月期 Euribor 的波动率。

#计算波动率
def volitility(lst):
    mean=mean_by(lst)
    deviation=0
    for i in lst:
        deviation+=(i-mean)**2
        return (deviation/(len(lst)-1)**1/2)
print(volitility(shibor_3m))
print(volitility(libor_3m))
print(volitility(euribor_3m))
        
        
4.889285714285866e-09
1.214317906349203e-09
3.1557142857143084e-10

计算得出三者的波动率分别为4.889285714285866e-09、1.214317906349203e-09、3.1557142857143084e-10

task3

比较均值和波动率大小关系

从前面得出的结果来看,SHIBOR的均值最大,LIBOR次之,EURIBOR最小;而从波动率上来看,SHIBOR波动率最大,LIBOR次之,EURIBOR最小。

Part3

task1

任务1: 创建包含每只科技股的日涨跌幅的列表,并且要求每只股票对应一个列表。

#创建列表
aapi = [-.025804,-.0074109,-.024938,-.017920,-.019845,-.009259,-.011246,-.001282,.021012,-.014767,.013314,-.001574,-.000394,-.012377,-.005348]
amzn =[-.030721,.010475,-.022324,.003024,.019431,.014735,-.011653,-.000149,.004914,-.013733,.013084,.004333,.001875,-.010735,-0.002179]
ibm = [0.004881,-0.013341,-0.020247,0.020311,0.003537,0.002972,-0.008270,-0.005003,0.004819,0.005977,-0.000138,-0.006426,-0.002851,0.003069,-0.000556]
csco = [-0.005053,-0.006208,-0.023282,0.0017248,0.007811,0.000756,-0.000189,-0.008691,0.007242,-0.007947,0.018310,-0.001498,-0.007503,0.000189,-0.000378]

task2

访问包含苹果公司股价日涨跌幅的列表,找出涨幅首次超过 2% 的交易日之前的全部交易日的涨跌幅数据,这就相当于首次访问到涨幅超出 2% 时就立刻终止访问,并且输出已经访问过的全部数据。

for i in aapi:
    if i>=0.02 or i<=-0.02:
        print(i)
        break
    else:
        print(i)

    
    
-0.025804

task3\4

任务3: 访问包含亚马逊公司股价日涨跌幅的列表,找出交易日当天股票是下跌的全部数据。

任务4: 访问包含IBM公司股价日涨跌幅的列表,找出日涨跌幅处于[-0.5%,0.5%]的数据并创建一个新列表;同时,访问包含思科公司股价日涨跌幅的列表,找出日涨跌幅超过0.7%的数据并创建一个新列表。

for i in amzn:
    if i>=0:
        continue
    else:
        print(i)
-0.030721
-0.022324
-0.011653
-0.000149
-0.013733
-0.010735
-0.002179

#IBM
new_list=[]
for i in ibm:
    if i<-0.005 or i>0.005:
        continue
    else:
        new_list.append(i)
print(new_list)
    
[0.004881, 0.003537, 0.002972, 0.004819, -0.000138, -0.002851, 0.003069, -0.000556]

#思科公司
new_list=[]
for i in csco:
    if i<=0.007 and i>=-0.007:
        continue
    else:
        new_list.append(i)
        
print(new_list)
[-0.023282, 0.007811, -0.008691, 0.007242, -0.007947, 0.01831, -0.007503]

### 回答1: 在Python中,有一些重要且常见的例题,因为它们涉及到一些相对较难的概念和技巧。以下是其中一些例题及其解释: 1. 递归函数:编写一个递归函数来计算斐波那契数列的第n项。这个问题涉及到递归的概念和如何使用递归函数解决问题。 2. 文件操作:编写一个程序,读取一个文本文件,并统计其中每个单词出现的次数。这个问题涉及到文件的读取和字符串操作。 3. 面向对象编程:设计一个图书类,其中包含图书的标题、作者和出版年份等属性,以及可以进行借阅和归还的方法。这个问题涉及到类的定义、属性和方法的使用。 4. 数据结构:实现一个栈的类,并实现栈的各种操作,如入栈、出栈和判断栈是否为空。这个问题涉及到数据结构的理解和如何实现其操作。 5. 网络爬虫:编写一个爬虫程序,从一个网页上获取所有的图片链接,并将其保存到本地。这个问题涉及到网络请求和解析HTML页面的技巧。 这些例题都相对较难,需要一定的编程经验和技巧才能解决。但是通过学习和实践,可以逐渐掌握并理解这些概念和技巧。 ### 回答2: Python编程语言有很多令人困惑的地方,以下是一个重难点的例题。 假设有一个列表包含了一些整数,我们需要编写一个函数来计算列表中奇数的平均值。如果列表中没有奇数,则应返回0。 首先,我们需要定义一个函数,命名为calculate_odd_average,并且接受一个参数,即包含整数的列表。函数的返回值应为一个浮点数。 接下来,我们需要在函数内部遍历列表,找到所有的奇数并将其相加。同时,我们还需要定义一个变量count_odd,用于记录列表中奇数的个数。 在遍历列表的过程中,我们可以使用取余操作符(%)来判断一个数是否为奇数。如果一个数对2取余的结果为1,则它是奇数。若结果为0,则表示为偶数。 然后,我们需要计算奇数的平均值。在计算平均值时,我们将奇数的总和除以奇数的个数即可。若奇数的个数为0,则说明列表中不存在奇数,此时函数应返回0。 最后,我们需要在主程序中调用这个函数,并输出结果。 下面是一个示例代码: def calculate_odd_average(lst): odd_sum = 0 count_odd = 0 for num in lst: if num % 2 == 1: odd_sum += num count_odd += 1 if count_odd == 0: return 0 return odd_sum / count_odd # 以下为主程序 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = calculate_odd_average(numbers) print("奇数的平均值为:", result) 通过以上代码,我们可以求得列表中奇数的平均值。 ### 回答3: Python编程语言是一种广泛应用于计算机编程和数据分析的高级编程语言。尽管Python具有简单易学的特点,但在学习过程中仍然有一些重难点例题需要注意。 一个重难点是理解和使用循环结构。Python提供了多种循环结构,如for循环和while循环。对于初学者来说,了解循环的工作原理和正确使用循环变量是非常重要的。例如,遍历列表或字符串时,需要正确设置循环的范围和步长,以避免出现错误或无限循环。 另一个重难点是理解和使用条件语句。Python使用if语句进行条件判断,但在使用if语句时经常会出现缩进错误或逻辑错误。为了正确使用条件语句,需要清楚地理解条件和分支的关系,并注意使用逻辑运算符来组合多个条件。 还有一个重难点是理解和使用函数。函数是Python中代码重用的主要方式之一。了解如何定义函数、传递参数和返回值是很重要的。此外,理解全局变量和局部变量的作用域以及如何正确使用和修改它们也是关键。 此外,Python还有其他一些重难点例题,例如异常处理、面向对象编程和模块导入等。这些都是需要深入学习和实践的概念和技巧。 为了克服这些重难点,建议学生们多加练习,编写各种不同类型的程序,并查阅相关的教程和文档。此外,与其他Python程序员进行交流和讨论也是提高编程能力的好方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值