建材秒知道
登录
建材号 > 设计 > 正文

Python大数据, 一些简单的操作

不安的金毛
温柔的小熊猫
2023-01-01 08:09:51

Python大数据, 一些简单的操作

最佳答案
娇气的春天
舒心的星月
2025-10-15 13:24:31

#coding:utf-8

#file: FileSplit.py

import os,os.path,time

def FileSplit(sourceFile, targetFolder):

sFile = open(sourceFile, 'r')

number = 100000#每个小文件中保存100000条数据

dataLine = sFile.readline()

tempData = []#缓存列表

fileNum = 1

if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建

os.mkdir(targetFolder)

while dataLine:#有数据

for row in range(number):

tempData.append(dataLine)#将一行数据添加到列表中

dataLine = sFile.readline()

if not dataLine :

break

tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")

tFile = open(tFilename, 'a+')#创建小文件

tFile.writelines(tempData)#将列表保存到文件中

tFile.close()

tempData = []#清空缓存列表

print(tFilename + " 创建于: " + str(time.ctime()))

fileNum += 1#文件编号

sFile.close()

if __name__ == "__main__" :

FileSplit("access.log","access")

#coding:utf-8

#file: Map.py

import os,os.path,re

def Map(sourceFile, targetFolder):

sFile = open(sourceFile, 'r')

dataLine = sFile.readline()

tempData = {}#缓存列表

if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建

os.mkdir(targetFolder)

while dataLine:#有数据

p_re = re.compile(r'(GET|POST)\s(.*?)\sHTTP/1.[01]',re.IGNORECASE) #用正则表达式解析数据

match = p_re.findall(dataLine)

if match:

visitUrl = match[0][1]

if visitUrl in tempData:

tempData[visitUrl] += 1

else:

tempData[visitUrl] = 1

dataLine = sFile.readline()#读入下一行数据

sFile.close()

tList = []

for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):

tList.append(key + " " + str(value) + '\n')

tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")

tFile = open(tFilename, 'a+')#创建小文件

tFile.writelines(tList)#将列表保存到文件中

tFile.close()

if __name__ == "__main__" :

Map("access\\access.log1.txt","access")

Map("access\\access.log2.txt","access")

Map("access\\access.log3.txt","access")

#coding:utf-8

#file: Reduce.py

import os,os.path,re

def Reduce(sourceFolder, targetFile):

tempData = {}#缓存列表

p_re = re.compile(r'(.*?)(\d{1,}$)',re.IGNORECASE) #用正则表达式解析数据

for root,dirs,files in os.walk(sourceFolder):

for fil in files:

if fil.endswith('_map.txt'):#是reduce文件

sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')

dataLine = sFile.readline()

while dataLine:#有数据

subdata = p_re.findall(dataLine) #用空格分割数据

#print(subdata[0][0]," ",subdata[0][1])

if subdata[0][0] in tempData:

tempData[subdata[0][0]] += int(subdata[0][1])

else:

tempData[subdata[0][0]] = int(subdata[0][1])

dataLine = sFile.readline()#读入下一行数据

sFile.close()

tList = []

for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):

tList.append(key + " " + str(value) + '\n')

tFilename = os.path.join(sourceFolder,targetFile + "_reduce.txt")

tFile = open(tFilename, 'a+')#创建小文件

tFile.writelines(tList)#将列表保存到文件中

tFile.close()

if __name__ == "__main__" :

Reduce("access","access")

最新回答
畅快的电脑
碧蓝的心情
2025-10-15 13:24:31

机器博弈是人工智能领域的重要分支,它的研究对象多以复杂的棋牌类智力游戏为主,已经得到解决的棋类游戏,几乎全部都应归功于机器博弈近半个世纪的发展。计算机解决问题的优势在于能把不易解析的问题,借助于现代计算机的运算速度优势枚举出所有的合理情形而得解然而,博弈问题的复杂程度决定了它不能过度依赖机器的计算能力。许多待解决的或已经解决的棋类,其状态空间复杂度或博弈树复杂度量级都太过庞大,所以我们需要添加约束,并且采用合理的算法进行优化。

五子棋问题是人工智能中的一个经典问题。当今世界,AlphaGo已经执围棋之牛耳,五子棋领域却鲜少有人问津。本文根据课堂所学知识结合文献、博客,基于两种开发语言实现了一个智能对战的AI五子棋游戏平台。

本文所做工作如下:

(1) 五子棋界面实现;

(2) 智能判定棋盘走势;

(3) 改进了棋盘扫描方式;

(4) 改良了系统评分表评估方式;

(5) 实现了基于点评分表估值找出最佳落子方式。

五子棋AI问题的最大问题是如何实现智能对弈,即当人落子之后,算法如何解读当前的棋盘并且对其进行分析解读,得到电脑方的最佳落子点。其次还有一个问题是如何判断胜利,这可以作为前面棋盘局势判定的一个子问题,也可以看做是一个单独的问题,不过这个问题总体来说较为简单,所以不做详细说明。

五子棋的整体知识构建包含以下部分:

(1) 棋盘局面表示法

(2) 棋局胜利判定

(3) 棋型知识库

(4) 智能博弈流程

对于问题(1),采用数组表示法。棋盘中的各交叉点有三种状态,不妨令 0表示空(未放置棋子) ,-1 表示有黑子 ,1 表示有白子,数组表示法的基本思想是:以交叉点对应的数组索引值来表达物理位置 ,以交叉点对应的元素值表达状态(空、 黑子、 白子)。令 V = {0 ,1 ,-1} ,棋盘 的第 i 个交叉点的状态 Si ∈V ,任何棋局都可以表示成一个 n ×n 的二元组。

对于问题(2), 采用数组表示法时,想知道任意两个元素 Si 和Sj 是否共线,要通过 i 和 j 之间的数值规律来判断。从这方面看,数组表示法是一种原始、低效的表示方法,但是对于评分表算法来说其性能损失是可以接受的。要判断是否有一方已经胜利,只需要对整个棋盘判定当前落子点的纵、横、正斜、反斜四个方向的最长延伸出四个位置看是否能连成一条同色直线即可。具体的操作可以视为:从落子点出发,向两个方向延伸,如果遇到同色,那么计数器加一,遇到非同色(空白或者异色)则停止在该方向的延伸,一个计数器记下该方向上的两头的连续同色棋子数。等到四个方向都探索完毕,如果四个计数器中有一个计数器达到了5,那么即可判断出已经有五子连珠了,此局结束。

问题(3)棋型知识库主要包括各种既定的棋盘形式,有如下几种:

² 活四 :有两个连五点(即有两个点可以形成五),图中白点即为连五点。当活四出现的时候,整个局势已经无法阻止连五了,活四的归属方一定能取得胜利;

² 冲四 :有一个连五点,如下面三图,均为冲四棋型。图中白点为连五点。 相对比活四来说,冲四的威胁性就小了很多,因为这个时候,只要跟着防守在那个唯一的连五点上,冲四就没法形成连五。

² 活三 :可以形成活四的三,如下图,代表两种最基本的活三棋型。图中白点为活四点。活三棋型是进攻中最常见的一种,因为活三之后,如果对方不以理会,将可以下一手将活三变成活四,而活四是无法防守的。所以,面对活三的时候,需要非常谨慎对待。在没有更好的进攻手段的情况下,必须对其进行防守,以防止其形成可怕的活四棋型。

² 眠三: 只能够形成冲四的三,如下各图,分别代表最基础的六种眠三形状。图中白点代表冲四点。眠三的棋型与活三的棋型相比,危险系数下降不少,因为眠三棋型即使不去防守,下一手它也只能形成冲四,而对于单纯的冲四棋型,是可以很简单的防守住的。

² 活二 :能够形成活三的二,如下图,是三种基本的活二棋型。图中白点为活三点。

² 眠二 :能够形成眠三的二。图中四个为最基本的眠二棋型,细心且喜欢思考的同学会根据眠三介绍中的图2-13找到与下列四个基本眠二棋型都不一样的眠二。图中白点为眠三点。

对于上述的棋型,我们主要考虑的是活四、冲四、活三、眠三这几种主要的进攻棋型的防守与构成,整体棋型遵从以下原则:优先考虑数目,同等数目的情况下考虑是活是眠。评分表算法的设计整体偏向于防守。

对于问题(4),当下棋型的评估分析,算法严格遵从以下流程:

当人类方落下一子,算法启动,扫描全局,得到人类棋子的集合和电脑棋子的集合。全局扫描之后,对当前局势进行排序、计算。对每个集合的每个空白点位置打分,打分依据是根据这个点周围四个方向上的同色连续棋子的数量。按照这些最后得到的评分,得出最大值。得到人类方和电脑方的两个最大值之后,进行比较,如果人类方局势较好(分数较高),则算法将下一次落子位置设置为人类方得分最高的点,尽力降低人类方的下一步得分;如果电脑方的分数较高,那么则直接在使得分数最高的点落子即可。

本次课程设计,一共设计了两个版本,一个Java版本,为19X19的棋盘,配备简单的消息提示,基于AWT实现GUI,开发工具IntelliJ IDEA 2018.1

另一个版本是使用Python设计,核心算法相同,但是受限于图片源文件,为15X15棋盘,基于pygame实现GUI,开发工具是:JetBrains PyCharm 2018.2.4 x64

因为近期时间较为紧迫,所以《人工智能》这门课我选择了较为简单的五子棋问题进行课程设计。在本次课程设计中,我的编码能力、调试能力、算法解读实现能力、函数优化能力等各方面有了长足的进步。在本次的设计过程中也出现了几个问题,下面对这些问题进行一个简单的描述:

(1) 对棋盘局势的判断力不够,因为只是简单的对当前的棋盘局势进行判断,基本等同于一个粗通规则而且天赋不高的五子棋选手。如果对手很细心,而且熟练经营各种布局策略,那么基本这个算法就会被钻研出习惯,从而被轻易针对,而且针对方案百试不爽;

(2) 判断棋局形式的时候对边界的评分算法跟中心区域的评分算法一致,无法有效提前识别边界,降低边界空白点的权重;

(3) 用户图形界面需要改进,另外可以增设PK模式以及选色、选择棋盘大小功能等;

后续可以尝试用博弈树算法尝试与当前算法进行比较。评分表算法牺牲了更高的精度,以求迅速的得出最佳落子点;而博弈树可以通过提前落子进行全局预判进行更全方位的对人类方的围追堵截。

另外,可以通过在课堂上学到的知识,比如BFS、DFS、A*算法、决策树算法 等应用于五子棋的智能决策中。

《人工智能》这门课让我对于图、知识表示、智能决策等各个方面有了更好地认识与体验,课堂设计内容充实有趣,让我受益匪浅,希望今后可以更加深入这个方面,并且将课堂上学到的知识应用于实践之中。

细腻的大象
温婉的银耳汤
2025-10-15 13:24:31
想要系统学习数据分析,建议一定要看的数据分析圣经《利用python进行数据分析》,这本书有理论有实践,深入浅出,层层递进,适合刚入门的数据分析小白,或者还有另外一本《python机器学习基础教程》,也是比较入门级的,不过更偏向于机器学习的方向,但是也是涉及比较基础的内容,可以作为进阶来学习。手打不容易,以上回答如有帮助请采纳,谢谢!

不安的草莓
现代的指甲油
2025-10-15 13:24:31
是这样的目前传智播客 黑马python的课程设计为如下

第一阶段 对python的基础进行学习和强化(针对零基础的)

第二阶段 web方向的学习(flask框架和Django框架)

第三阶段 爬虫方向的学习

第四阶段 数据分析方向的学习

第五阶段 人工智能方向的学习

通过以上课程 我们的学员可以在 web方向,爬虫方向,数据分析方向,人工智能方向四个方向就业 毕业的平均薪资在11k左右 人工智能方向需要一定的数学基础 同时就业薪资在15k左右

漂亮的抽屉
清秀的楼房
2025-10-15 13:24:31

内容与进度安排

1. 内容及要求

① 利用numpy库中的多项式处理函数,计算函数f(x)=x5+2x3+1 当x=2和x=5时的值,并输出f(x)的一阶导数和二阶导数。

② 利用matplotlib库中的pyplot模块,绘制x在【10,10】取值区间上的f(x)函数、一阶导数和二阶导数的图形,要求:

(A)绘制三个子图,分别放置上述的三个图形。

(B)第一个子图区域,标题为Polynomial,使用红色实线绘制。

(C)第二个子图区域,标题为First Derivative,使用蓝色虚线绘制。

(D)第三个子图区域,标题为Second Derivative,使用绿色实心圆点绘制。

① 读取文件python考试成绩和学生档案。

② 使用merge(),以学号或姓名将两个文件合并,生成一个新的DataFrame对象students。

③ 在将学生总评成绩按照由低到高进行排序,新增一列数据“排名”。

④ 根据姓名对成绩进行分组,输出男生、女生的平均成绩,和男女生的最高分。

⑤ 画出总评成绩的箱线图。

① 分析文本“水浒.txt”,分词并统计有实质意义的词频(跟内容息息相关)。

② 将《水浒》中的高频词制作成词云。

③ 分析每一章节的“喜怒哀乐”走向。

④ 分析水浒中36天罡的人物社交关系网络。

个性的啤酒
踏实的乌冬面
2025-10-15 13:24:31

夜曲编程学python靠谱。

零基础学python其实最重点的就是解决两个问题:1. 形成编程的逻辑思维 2. 通过实例能够真正应用。夜曲编程就初学者入门而言是很不错的,主要有几个优势:

课程设计:总体设计由浅入深,学习路径清晰,容易坚持。采用的是卡片模式,每日学习一课,只需花费20来分钟。且页面自带记忆卡片,复杂概念简单化。

夜曲编程他的教学方式比较不错,里面有图文结合,还会给你单词卡片,练习题,课外习题来给你做,他们那个进阶课程还有一个群,里面的老师也很热心。和里面的同学一起交流,感觉挺好的,帮他们解答的时候,也很有成就感。

就这样,一天天的,就渐渐学完了python里面的基础。感觉比较轻松,但现在回过头来看当初学过的知识才会发现,哇,真的非常多耶!所以我觉得这个课程还比较值得,因为你不用花费太多的时间去寻找习题,去花费时间,怎么找项目之类的,夜曲编程都会给你提供这些东西。

只要每天坚持完成打卡,在课程结束后夜曲编程还会给你发放奖励,也就是单词卡片,还有自选的一个键盘。

跳跃的草丛
懦弱的歌曲
2025-10-15 13:24:31
学习python,我首先根据自己完全代码零基础的情况下,为什么学习Python作为核心问题,进行了一个自我定位以及目标定位,我认为只要有一个目标,那么就找方法去打成目标就行了。

我是完全零基础,选择学习Python主要还是因为看到大家都说Python是相对简单,比较好入门IT行业的,而我的目的也是希望学习完Python可以找到一份相应的工作,赚取一份工资可以买口红,哈哈哈哈哈哈哈哈哈哈~

当然,也有很多人可能已经从事其他编程工作,但是想要学习Python以来丰富自身,提升自身的核心竞争力,我觉得这样应该会比我这类完全零基础的学习要容易快速的很多,

我就只说下我这位完全零基础是如何学习的吧

我也搜查了一些学习方法的问答帖子,里面也看到很多推荐的学习方法,有推荐书籍的,有推荐网课的,我开始认为,看书应该是比较好的选择,因为著作成书籍,表明内容上是相对有一定的权威和系统的,同时,想到从小都是书本学习,这更能让我信服,于是我就购买了书籍,开始了我的学习计划,可是,在半强迫自己的情况下,我看了三天半书籍实在是看不下去了,是的,三天半还是强迫自己看的,原因一,看书真的太乏味了,看着看着就会心不在焉,总是走神。原因二,这个时候我对代码没有概念,有些文字都要读两三遍才会理解意思,越难理解就越不想看书,这种感觉就是上学时我看数学,英语书一模一样的感觉。很显然,看书学习是不适合我了,

看书不行,于是我就想着还是找网上的视频教程学习吧,上网一搜,真的是各家机构的教程也是琳琅满目,还真的让我不知道从哪开始学起了,

这个时候真的是想有一位前辈可以给我指点一下迷津,告诉我应该先学什么,再学什么,哪些是重点知识,哪些是了解就好,就是可以给我一些学习的建议,于是我想那我可以先加入一些技术学习交流群,在里面应该可以认识到一些学习的人,于是我就开始大量的搜索加入学习群,于是在里面开始咨询学习方法,

但是,这个时候我又发现,我好像一张白纸,我想问一些问题,可是我不知道该怎么问,我也只能问大家都是怎么学习的,群内的朋友也都还很热情,也和我说了很多学习方式,不过我发现每个人都有各自的学习方式,各自都有各自的理论和优势,在那么多的方法面前我再一次的有些混乱,又不知道哪一方法适合我,于是,我想到千人千面,每个人有每个人的想法,我咨询的人越多,获取的信息越多可能我就会越乱,于是我决定,那我就要借鉴看到的这些信息,来整理一套自己的方式,不一定对,但是可能这更适合我自己。

于是,我并没有先着急的就找教程视频来直接学习,我现在想知道的就是,应该先学什么,掌握哪些知识之后,再学什么,我觉得我应该先整理一套相对看上去系统的教程,虽然我最希望可以找到一个人给我一些这类的指引,但是奈何没有找到,那就只能自己去整理了,我根据我买的书籍目录,以及查了一些培训机构的学科介绍,教程大纲内容,进行了一个统计对比,发现其实学习的内容路径也还是有它一定的规律,那我就整理了一份知识点的目录学习路径,我按照我整理的这个学习路径上的知识点目录去查找对应的教程,这样就整理了一套自己的学习资料,整理学习路径和教程,利用了我比较多得时间,不过整理好了那么就可以开始学习了。

但在查找教程的时候,又走了一些弯路,我当时只想到只要按照我整理的这个目录找到对应的教程就好了,可是在学习的时候,还是觉得知识点之间的衔接有些杂乱无章,

而且每一个知识点都是不同机构课程风格不同的教程视频,这让我学上去有些别扭,而且有的老师讲得我很喜欢听,有的就不是很喜欢,于是,我就又想,那我就找我喜欢这个老师的课程就好啦,可是我找了两三天,同一个老师的教程是非常难找到公开的全套教程,这个我想也可以理解,老师也可能没时间和精力来从零开始录制全套教程,而且老师也是要工作赚钱养家生活的,于是我想那我可以找同一个机构的教程吧,这样也能最起码是课程风格一致,于是我就找到了我我认为课程比较好得教程机构,又将我的学习资料重新的整理替换了一下,果然我觉得学习感觉好了一些,而且我又找到他们的客服,要到了他们课程的一些配套资料,这对我学习来说起到了更加的有效帮助。

最后,在学习完我整理的学习知识教程之后,又遇到了一个瓶颈,就是学习完知识点内容,掌握的也是七七八八,之后又不知道该怎么做了,不知道自己学习的有没有达到可以找工作的条件,

于是我又查询了一些资料,可一些招聘信息,了解的一些信息主要要求说是需要项目经验,需要一些项目功能技术的掌握,那我的理解就是,已经掌握了基础知识,企业招聘人员需要掌握一些项目技术能力,

去帮助解决处理问题,也就好像,假设Python有100个技术框架,但是一个企业只用到其中30个,那如果你的学习掌握正是他们用的这30个,那么你不会那另外的70个也可以,只不过你学习掌握的越多,你的条件符合范围和就业机会也就越大,我按照我的这个大致理解,

我就仔细了解了一下Python主要可以从事哪些方向,我就根据我比较喜欢的方向看了一下招聘信息,然后根据上面的普遍要求,进行了学习。最后就整理包装了一下简历,尝试着投简历找工作,当然面试也并不是顺利,刚开始的面试是还慌乱,面试也是没有任何结果,不过我是在每次面试中总结经验,收集好面试问题,回来在好好准备,为下一次面试做知识储备,就这样我面了试大概有将近二十家,终于也是找到了一个算是实习岗位的工作,我想着先做着,这个时候应该先到企业中去学习一些真实的项目经历比较重要。

最后我总结一下我学习过程中我认为比较重点的内容

首先,学习我们要有一个清楚的自我认识,是为了找工作,还是为了辅助工作来增加自己的竞争力,也就是要有一个明确的目标。 如果是完全零基础学习,我建议开始不要先看书,原因上面我也有说了,这个时候看书完全看不进去,里面的知识点也很难理解的,虽然我们从小就接受书本教育,可是前提也都是要有老师讲解的,不是我们自己看书就可以的。

然后,就是要寻找一套适合自己的学习方式,最好还是自己整理一套适合自己的学习资料,因为只有自己最了解自己,这里可能会花费比较长的时间,但是这会让你在之后的学习上节省很多时间,让你事半功倍。

最后,如果在选择视频教程的时候,尽量选择一个老师的教程(但是很难实现)最差也要尽量选择同一家机构的教程,因为这样在课程设计和课程风格上相对比较统一。然后在学习的过程中,最好是根据视频课程老师的进度,自己做学习笔记,这样的好处,一是,在今天学习完,明天你可能就只记得一个大致概念了,俗话说,好记性不如烂笔头,做笔记会让自己印象更深刻,二是,在之后你想要回头复习的时候,也会让你有一个清晰的复习思路。当学习完一个阶段知识的时候,感觉视频老师讲解的内容有些浅,这时候可以看一些优秀的书籍,因为你觉得老师讲得浅,说明你的学习理解的非常好,这时候看一些书可以起到很大的提升作用。

至于找工作面试的事情我就不详细地写了,手敲了这么多,有点累了,最后希望我的建议可以对想要学习的伙伴有一点点帮助吧。