Python DataFrame 和函数的运用

要求创建一个名叫normalized的函数
输入score之后每个人的平均分和科目平均分会出来
图片说明

图片说明
没有学过python 所以不是很能理解函数和Dataframe的用法

2个回答

# Import
import pandas as pd

# Specify Info
data = {'姓名':['周杰伦','林俊杰','陈信宏','丁彦仪','杜兰特'],
        '语文':[79,65,64,54,24],
        '数学':[75,54,65,58,67],
        '英语':[56,46,87,45,95]}

df = pd.DataFrame(data)
'''
第一步是导入数据,导入数据的方式有很多种。

1. 我们这里采用的是数据导入的形式是我们自己手动输入生成一个【字典】,这个字典当中
   包含了四个key-value对,他们分别是‘姓名’、‘语文’、‘数学’、‘英语’,这些就是
   他们的key,而value以列表的形式呈现分别表明了这五位同学在每一科上的得分

2. 你也可以通过导入文件的形式导入数据,形如 pd.read_csv('file.csv') 


总之,都是要将数据规整好,随后放入我们的DataFrame
'''

图片说明

上图显示了我们创建的这个DataFrame的格式

# Def
def normalized(df):
    subject_list = df.columns.to_list()
    subject_list.remove('姓名')
    for subject in subject_list:
        print(f'{subject}的学科平均分是:{df[subject].mean()}')
    for name in df['姓名'].to_list():
        print(f'{name}同学的三科平均分是:'+str(int(df[df['姓名']==name].mean(1))))

'''
第二步我们来定义你提到的normalized函数。

在这个函数中我们只需要输入一个参数,也就是指定你所要分析DataFrame

针对于输入的df,该函数会首先遍历每一个学科,打印每一学科的平均分;接着会遍历每一位同学,
打印每一位同学的三科的平均分

对于Python的基本知识以及DataFrame知识的组合运用是数据分析当中的关键,如果你想进一步
了解Pandas的使用可以随时与我交流,希望帮助到你。
'''

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求大神指教!!!python dataframe apply 函数报错
![图片说明](https://img-ask.csdn.net/upload/201909/23/1569168977_105909.jpg) ![图片说明](https://img-ask.csdn.net/upload/201909/23/1569169065_851874.jpg) 代码和报错截图如上, 请问有哪位大神知道这是什么原因? 感谢!!!
python pandas用函数算距离时报错
在网上copy来的一个算经纬度的方法,但在实际操作运行到 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) 的时候到报错:”TypeError: cannot convert the series to <class 'float'》,显示series不能转换为float,请问下各位大佬这个问题怎么解决 需要怎么修改脚本。 ``` import numpy as np import pandas as pd test_data = pd.DataFrame(pd.read_excel("test.xlsx")) def haversine(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 """函数作用:计算两个经纬度之间的距离""" # 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine公式 dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # 地球平均半径,单位为公里 return c * r * 1000 test_data["距离(米)"] = test_data.eval('@haversine(经度,纬度,Longitude,Latitude)') """ 表内容举例: name 经度 纬度 Longitude Latitude A 113.545761 23.106667 113.09461 23.39367 B 113.545761 23.106667 113.173833 23.336054 C 113.545761 23.106667 113.1799 23.43946 D 113.545761 23.106667 113.1975278 23.38591667 E 113.545761 23.106667 113.1975278 23.38591667 F 113.545761 23.106667 113.219664 23.100377 G 113.545761 23.106667 113.219664 23.100377 H 113.545761 23.106667 113.22253 23.18483 I 113.545761 23.106667 113.22253 23.18483 """ ``` 程序运行到
python pandas apply 原理求解,如何在dataframe 中将同一行的某个数值塞进df结构的一列?
有一个data frame结构,其中一列是data frame组成的,其他的列都是str或者数值之类的,如何将一行中str一类的塞入df里? 我试过apply,结果很诡异。。。 函数里print出来的结果是想要的,但是返回以后拿到的结果city就都是 tyu一个数值了 高手求解。。。 ``` import pandas as pd def testcc(df1): #tmpdf = df1 tmpdf = df1['c'] value = df1['a'] # value = 111 tmpdf['city']=value print(tmpdf) return tmpdf df1 = pd.DataFrame({'a': ['qwe'], 'b': ['asd']}) df4 =df1 df3 = pd.DataFrame({'a': ['qwe']}) df2 = pd.DataFrame({'a': ['qwe', 'wer', 'ert', 'rty', 'tyu'], 'b': ['asd', 'sdf', 'dfg', 'fgh', 'ghj'], 'c': [df1,df3,df4,df1,df1]}) df2['d']=df2.apply(testcc,axis=1) print('------------------') print(df2['d']) ``` 结果是 ``` a b city 0 qwe asd qwe a b city 0 qwe asd qwe a city 0 qwe wer a b city 0 qwe asd ert a b city 0 qwe asd rty a b city 0 qwe asd tyu ------------------ 0 a b city 0 qwe asd tyu 1 a city 0 qwe wer 2 a b city 0 qwe asd tyu 3 a b city 0 qwe asd tyu 4 a b city 0 qwe asd tyu Name: d, dtype: object ```
【新手问题】如何将dataframe结构中的人名字符串拆分后统计出现次数
题主刚学pandas不久,遇到这个问题希望各位大大帮忙解决。 希望在一份电影数据表中统计重复出现次数前几位的演员名称,原始dataframe数据格式如下: ![图片说明](https://img-ask.csdn.net/upload/202002/24/1582539723_693897.png) 这是想要进行字符串统计的cast序列内容![图片说明](https://img-ask.csdn.net/upload/202002/24/1582539816_477529.png) 尝试使用了values_count()方法,没有效果 也尝试了Counter()方法,报错unhashed list 想知道如何正确运用分隔符把这些数据切成单个的字符串并存入列表的形式,再进行统计 还有想知道unhashed list报错的解决方法,网上只说了为什么但是好像查不到如何解决 谢谢各位大大 ———————————————————————————————— 补充一个新问题,同样与计数有关 ![图片说明](https://img-ask.csdn.net/upload/202002/24/1582540105_782985.png) 如何计算各个州的婴儿出生性别F和M的总和,想要绘制成并列条形图的形式,但是用duplicated()方法好像统计不出来,需要用自定义函数生成,想了半天没想通,希望大大们顺便支个招。
多进程处理数据,处理结束之后dataframe里面的数据无变化。
本人正在处理大量的数据的时候想到采用多进程的方式加快数据处理的速度,但是不知道为什么,数据处理完之后,dataframe里面的数据并没有像函数定义那样新增一列,然后等于别的两列相加得来。所以想来请教一下各位大佬。 以下是我那50条数据来试验的代码: from multiprocessing import Pool import pandas as pd f = open(r'F:\寒假\交通大数据计算\数据\0511_20.csv') df = pd.read_csv(f,nrows=50) def youfunc(a): a['new']=a['new'].map(lambda x:x['FNODE']+x['TNODE']) return a if __name__ == '__main__': p = Pool(2) df1 = df.iloc[:25] df2 = df.iloc[25:49] list_df = [df1,df2] for i in range(2): p.apply_async(youfunc, args=(list_df[i],)) p.close() p.join() 希望有大佬能指出小弟的错误,感激不尽感激不尽。
pandas的dataframe的同一id的多行数据按其中一个特征将数据平铺该怎么简洁操作?
![图片说明](https://img-ask.csdn.net/upload/202001/15/1579069054_942084.png) 问题描述的效果如上图所示,python里有什么函数有这功能或有什么简洁高效的代码可以实现呢?
pandas 中 apply()自写函数,同时运用多列数据
原始dataframe有“10730 rows × 202 columns”,列名形如: RegionName State 2000-01 2000-02 2000-03 2000-04 2000-05 2000-06 2000-07 2000-08 ... 需要把每年的12个月份变成每年4个季度展示,所以相当于没三列数据求一个和,我的代码如下: ``` def add(x): for i in range(2,201): if i <= 199: if (i+1)%3 ==0: return x[i] + x[i+1] + x[i+2] if i == 200: return x[i]+x[i+1] housing_quarters.groupby(["State","RegionName"]).apply(add) ``` 输出结果是一条小横线,没有数据,我不知道哪儿错了,或者能帮我改一下函数吗? 我对apply()不太熟,总是搞不清里边引用函数时要不要带形参,自己def函数时的形参该写什么。如果能稍作解释就更好了~!谢谢!
pandas dataframe数据结构,想检查索引列中的数据是否唯一怎么检查
如题 pandas dataframe数据结构,想检查索引列中的数据是否唯一怎么检查 不知道pandas中有没有这样的函数
dataframe 多列运算形成新的列问题
有一个名为“df_source”的dataframe: ![图片说明](https://img-ask.csdn.net/upload/201909/25/1569374877_884320.jpg) 想新添加一列“result1”为前两列相除结果,使用如下代码实现: df_source.eval('result1 = total_owner_equities/good_will',inplace = True) 提示错误:TypeError: unsupported operand type(s) for /: 'object' and 'object' 不知道错在哪里 然后想要用apply结合匿名函数解决,代码如下: df_source["result1"]=df_source[[" total_owner_equities","good_will"]].apply(lambda x:x[" total_owner_equities"]+x["goodwill"],axis=1) 但是也提示错误了,可能是我的用法有问题吧,请帮忙看下如何解决,哪种方法都行哈
一个有关pandas 中 Rolling_apply函数的问题
有关这个函数,我已经察看了pandas的手册,但是由于缺乏例子,还是有些没明白 首先,这个函数通过内部参数func 对某个dataframe向指定函数进行Rollingwindos的运算 我想知道 他每次向这个函数传递的参数是什么 如何能传递多个参数,其次可以获得什么数据类型的返回值 这里我提供一个例子 比如有个DataFrame变量data 格式如下 time price volume 21:00:00 1000 10 21:00:01 999 5 21:00:02 998 4 21:00:03 998 3 21:00:04 996 11 21:00:05 995 13 我想能生成一列 用来计算2秒内price 的Volume加权平均
dataframe 分组后应用自定函数计算,为什么第一个索引会应用两边
![图片说明](https://img-ask.csdn.net/upload/201911/21/1574350505_156770.png) index = 1 输出了两遍,不明白为什么 求大神指导,非常感谢
Python, list of dictionaries遍历筛选
![图片说明](https://img-ask.csdn.net/upload/201908/28/1566923016_746946.png) 问题说明:数据导入index3就是json字符串格式(带单引号str),想要提取字典里面key值为"name"的所有value; 已有解决方案:把json转码成list of dictionaries,三层循环,遍历dataframe,遍历list,遍历字典key; 问题:数据量稍微多一点,速度特别慢,python小白求大神想想其他的方案,比如pandas有没有好用的函数?
python数据挖掘 关联规则 apriori算法运算中的问题
-*- coding: utf-8 -*- from __future__ import print_function import pandas as pd #自定义连接函数,用于实现L_{k-1}到C_k的连接 def connect_string(x, ms): x = list(map(lambda i:sorted(i.split(ms)), x)) l = len(x[0]) r = [] for i in range(len(x)): for j in range(i,len(x)): if x[i][:l-1] == x[j][:l-1] and x[i][l-1] != x[j][l-1]: r.append(x[i][:l-1]+sorted([x[j][l-1],x[i][l-1]])) return r #寻找关联规则的函数 def find_rule(d, support, confidence, ms = u'--'): result = pd.DataFrame(index=['support', 'confidence']) #定义输出结果 support_series = 1.0*d.sum()/len(d) #支持度序列 column = list(support_series[support_series > support].index) #初步根据支持度筛选 k = 0 while len(column) > 1: k = k+1 print(u'\n正在进行第%s次搜索...' %k) column = connect_string(column, ms) print(u'数目:%s...' %len(column)) sf = lambda i: d[i].prod(axis=1, numeric_only = True) #新一批支持度的计算函数 #创建连接数据,这一步耗时、耗内存最严重。当数据集较大时,可以考虑并行运算优化。 d_2 = pd.DataFrame(list(map(sf,column)), index = [ms.join(i) for i in column]).T support_series_2 = 1.0*d_2[[ms.join(i) for i in column]].sum()/len(d) #计算连接后的支持度 column = list(support_series_2[support_series_2 > support].index) #新一轮支持度筛选 support_series = support_series.append(support_series_2) column2 = [] for i in column: #遍历可能的推理,如{A,B,C}究竟是A+B-->C还是B+C-->A还是C+A-->B? i = i.split(ms) for j in range(len(i)): column2.append(i[:j]+i[j+1:]+i[j:j+1]) cofidence_series = pd.Series(index=[ms.join(i) for i in column2]) #定义置信度序列 for i in column2: #计算置信度序列 cofidence_series[ms.join(i)] = support_series[ms.join(sorted(i))]/support_series[ms.join(i[:len(i)-1])] for i in cofidence_series[cofidence_series > confidence].index: #置信度筛选 result[i] = 0.0 result[i]['confidence'] = cofidence_series[i] result[i]['support'] = support_series[ms.join(sorted(i.split(ms)))] result = result.T.sort_values(['confidence','support'], ascending = False) #结果整理,输出 print(u'\n结果为:') print(result) return result # -*- coding: utf-8 -*- inputfile = 'C:/course/c5_data1.xlsx' outputfile = 'C:/course/c5_answer.xlsx' #结果文件 data = pd.read_excel(inputfile, header = None) print(u'\n转换原始数据至0-1矩阵...') ct = lambda x : pd.Series(1, index = x[pd.notnull(x)]) #转换0-1矩阵的过渡函数 b = map(ct, data.as_matrix()) #用map方式执行 data = pd.DataFrame(list(b)).fillna(0) #实现矩阵转换,空值用0填充 #print(u'\n转换完毕。') #del b #删除中间变量b,节省内存 support = 0.2 #最小支持度 confidence = 0.5 #最小置信度 ms = '---' #连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符 find_rule(data, support, confidence, ms) 出现以下 ![图片说明](https://img-ask.csdn.net/upload/202003/05/1583397715_618337.png) ``` ``` ``` ```
Python,json转码,list of dictionaries遍历筛选
问题说明:原始数据导入字段index3就是json字符串格式(带单引号str),想要提取字典里面key值为"name"的所有value; ``` df_tmp #pandas dataframe #字段index3是json字符串格式(带单引号str),去掉单引号就是list of dics df_tmp["index3"][0] '[{"name": "Mary", "age":"7", "Sex":"F"},{"name":"Jack", "age":"11","Sex":"M"}]' df_tmp["index3"][1] '[{"name":"Jack", "age":"11","Sex":"M"},{"name":"Lucy","age":"9","Sex":"F"},{"name":"Nancy", "age":"10","Sex":"F"}]' df_tmp["index3"][2] '[{"name": "Luke", "age":"6", "Sex":"F"},{"name":"Lily", "age":"11","Sex":"F"}]' ``` 已有解决方案:把json转码成list of dictionaries,三层循环,遍历dataframe,遍历list,遍历字典; 问题:数据量稍微多一点,速度特别慢,python小白求大神想想其他的方案,比如pandas有没有好用的函数,可不可以用mysql处理?
shc框架将dataframe写入Hbase int型会乱码
Python用shc框架将dataframe写入Hbase int型会乱码,而且读回df同样乱码 ``` df_test_HBase = sql_sc.read.format('jdbc').options(url=jdbc_url_test,driver=jdbc_driver,dbtable='testHBase').load() df_test_HBase.createOrReplaceTempView("test_HBase") df_cast_HBase = sql_sc.sql("select CAST(id as String) id,name,CAST(age as String) age,CAST(gender as String) gender,cat,tag,level from test_HBase") df_cast_HBase.show() dep = "org.apache.spark.sql.execution.datasources.hbase" catalog = """{ "table":{"namespace":"default", "name":"teacher", "tableCoder":"PrimitiveType"}, "rowkey":"key", "columns":{ "id":{"cf":"rowkey", "col":"key", "type":"string"}, "name":{"cf":"teacherBase", "col":"name", "type":"string"}, "age":{"cf":"teacherBase", "col":"age", "type":"string"}, "gender":{"cf":"teacherBase", "col":"gender","type":"string"}, "cat":{"cf":"teacherDetails", "col":"cat","type":"string"}, "tag":{"cf":"teacherDetails", "col":"tag", "type":"string"}, "level":{"cf":"teacherDetails", "col":"level","type":"string"} } } """ df_cast_HBase.write.options(catalog=catalog,newTable="5").format(dep).save() ``` 我目前只能通过Cast函数将int转成String并且把catalog中type为int也改成string后写入HBase才不乱码,但只是治标不治本,求大神给个治本的解决办法!! 前后对比图: ![图片说明](https://img-ask.csdn.net/upload/201904/28/1556424025_543013.png)
用ctypes向dll传入的数组,返回python后,其中的数据有时正确有时错误,怎么办?
运行环境: win10 + anaconda5.3 + jupyter python文件 ``` import numpy as np import pandas as pd mylib = ctypes.cdll.LoadLibrary('mydll.dll') C_fun = mylib.func_name C_fun.restypes = None C_fun.argtypes = pass_args_Struct, c_double*10 # pass_args_Struct 是继承ctypes.Structure定义的结构体,代码略 def generate_Struct(data, 其他参数略): # 生成 pass_args_Struct,代码略 # data是个DataFrame,用于接收下面myClass的data属性 class myClass(): # myclass有个data属性,data是一个DataFrame # 其他代码略 def func1(self, x): # 删除self.data的一列,再根据x参数重新添加这一列,代码略 struct_x = generate_Struct(self.data, 其他参数略) myArr = (c_double*10)() C_fun(struct_x, myArr) npArr = np.ctypeslib.as_array(myArr,(10,)) return pd.Series(npArr, _column_names) # _column_names 定义略 def func2(self): # 生成df,df是个只有一列值的DataFrame,代码略 return df.apply(lamba x: self.func1(x[0]), axis=1, result_type='expand')) # 其他代码略 ``` mydll.dll中的代码 ``` #define API extern "C" __declspec(dllexport) typedef pass_args_Struct { // 对应于python中pass_args_Struct,代码略 } API void func_name(pass_args_Struct* x, double arr[]) { // 对arr进行一些操作,代码略 } ``` 在jupyter中: 导入前述Python文件并生成 myObject=myClass() 之后, 执行ret1 = myObject.func1()没什么问题, 但是ret2 = myObject.func2()的结果则有时正确有时错误,错误的时候,ret2中会出现一些NaN值和错误的值。 之前把generate_Struct()定义成myclass的一个方法,连ret1也会出错; 之前的func1(self, x)中采用: ``` func1(self, x): # 其他代码略 myArr = np.ctypeslib.as_array(myArr,(10,)) # 左边不用新名而直接用myArr return pd.Series(myArr, _column_names) ``` 则ret1会频繁出错,基本上是对一次就错一次。 程序一直能运行,只是结果有时不正确。 请教各位大牛,正确的写法是什么样子的? ==================================================== =====2018年11月30日更新==================================== 我可能发现问题了: Python文件TestX.py(放在PYTHONPATH下): ``` import numpy as np from ctypes import Structure, c_double, c_int, POINTER class struct_args(Structure): _fields_ = [('data',POINTER(c_double*2)), ('rows',c_int)] class test(): def __init__(self): self.data = None def get_args_2C(self): arr = np.ascontiguousarray(self.data[['foo','bar']].values, dtype=np.float) rows = c_int(arr.shape[0]) return struct_args(arr.ctypes.data_as(POINTER(c_double*2)), rows) ``` 在jupyter中: ``` import TestX import pandas as pd import numpy as np mydata = pd.DataFrame(np.arange(1600).reshape(800,2),columns=['foo','bar']) # 行数不要太小 mytest = TestX.test() mytest.data = mydata args = mytest.get_args_2C() np.ctypeslib.as_array(args.data,(800,)) ``` 输出的值经常是错误的。 ==================================================== =====2018年12月3日更新==================================== 不知道为什么,但总算是不出错了: python文件: ``` from ctypes import Structure,POINTER,c_double def Struct_A(ctypes.Structure): _fields_ = [(), # 其他成员略 ('my_arr',POINTER(c_double)] # 这个地方用c_double*10后面也会出错 class myClass(): def makeStructA(self, 其他参数): arr = (c_double*10)() SA = Struct_A(……,arr) # 其他成员略 return SA def myMethod(self, 其他参数): SA = self.makeStructA(其他参数) # myCfun是dll中的函数,功能是利用SA中数据进行一些计算,然后把结果写入SA.my_arr,具体代码略 myCfun(SA) ret = pd.Series(np.ctypeslib.as_array(SA.my_arr,(10,)), _columns_name) ret['odd'] = 1 # 这里随便新加点什么就不会出错了 return ret ``` 以上代码如果没有ret['odd']=1那一行,则myObject.myMethod()返回的Series中都是错误的值(看着像是内存未初始化,比如-2.24934335e308之类),而随便给ret添加点什么内容,返回值就是正确的了。 但是在以下计算中仍然会出错,只是出错的频率变小了,而且多运行几次就会正确: ``` class myClass(): # 接上文 def myOptimize(self, arg_name, arg_range): ret = pd.DataFrame({arg_name:arg_range}) _optimize = lambda arg: self.myMethod(**{arg_name:arg[arg_name]}) return ret.join(ret.apply(_optimize, axis=1, result_type='expand')) ``` ===================================== =====2018年12月7日更新==================================== 又出错了!!!12月3日写的: ``` ret['odd'] = 1 # 这里随便新加点什么就不会出错了 ``` 那个函数确实不出错了,但是别的函数用同样的写法(先生成c_double*shape再传入dll在C中写入值)得到的ret无论添加行还是添加列,多运行几次总会出错(内存被清理)。 换一种写法: ``` 略 arr=np.zeros(shape) 略 # 然后传入arr.ctypes.data_as(POINTER(c_double*10)) ``` 目前暂时不出错了。 =====2018年12月13日更新==================================== 前面的写法有问题:用函数生成结构体(比如makeStructA)再传递给dll就会出错,直接将makeStuctA的代码放到myMethod中就不会出错。 另外,传递结构体时用byref就不会出错了,在dll中用malloc给结构体的成员赋值都不会出错。
python运行有错误:这是对数据进行分析生成可视化界面的程序(我是小白,请说下解决方法)
运行错误: C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py 一共有:16590个 Building prefix dict from the default dictionary ... Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache Loading model cost 0.808 seconds. Prefix dict has been built succesfully. Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py", line 252, in <module> jiebaclearText(content) File "C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py", line 97, in jiebaclearText f_stop_text = f_stop.read() File "D:\python111\lib\codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 3: invalid start byte Process finished with exit code 1 代码如下: ''' data : 2019.3.28 goal : 可视化分析获取到的数据 ''' import csv time = [] nickName = [] gender = [] cityName = [] userLevel = [] score = [] content = '' # 读数据 def read_csv(): content = '' # 读取文件内容 with open(r'D:\maoyan.csv', 'r', encoding='utf_8_sig', newline='') as file_test: # 读文件 reader = csv.reader(file_test) i = 0 for row in reader: if i != 0: time.append(row[0]) nickName.append(row[1]) gender.append(row[2]) cityName.append(row[3]) userLevel.append(row[4]) score.append(row[5]) content = content + row[6] # print(row) i = i + 1 print('一共有:' + str(i - 1) + '个') return content import re, jieba # 词云生成工具 from wordcloud import WordCloud, ImageColorGenerator # 需要对中文进行处理 import matplotlib.font_manager as fm from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] from os import path d = path.dirname(__file__) stopwords_path = 'D:\ku\chineseStopWords.txt' # 评论词云分析 def word_cloud(content): import jieba, re, numpy from pyecharts import WordCloud import pandas as pd # 去除所有评论里多余的字符 content = content.replace(" ", ",") content = content.replace(" ", "、") content = re.sub('[,,。. \r\n]', '', content) segment = jieba.lcut(content) words_df = pd.DataFrame({'segment': segment}) # quoting=3 表示stopwords.txt里的内容全部不引用 stopwords = pd.read_csv(stopwords_path, index_col=False, quoting=3, sep="\t", names=['stopword'], encoding='utf-8') words_df = words_df[~words_df.segment.isin(stopwords.stopword)] words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数": numpy.size}) words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False) test = words_stat.head(500).values codes = [test[i][0] for i in range(0, len(test))] counts = [test[i][1] for i in range(0, len(test))] wordcloud = WordCloud(width=1300, height=620) wordcloud.add("影评词云", codes, counts, word_size_range=[20, 100]) wordcloud.render(d + "\picture\c_wordcloud.html") # 定义个函数式用于分词 def jiebaclearText(text): # 定义一个空的列表,将去除的停用词的分词保存 mywordList = [] text = re.sub('[,,。. \r\n]', '', text) # 进行分词 seg_list = jieba.cut(text, cut_all=False) # 将一个generator的内容用/连接 listStr = '/'.join(seg_list) listStr = listStr.replace("class", "") listStr = listStr.replace("span", "") listStr = listStr.replace("悲伤逆流成河", "") # 打开停用词表 f_stop = open(stopwords_path, encoding="utf8") # 读取 try: f_stop_text = f_stop.read() finally: f_stop.close() # 关闭资源 # 将停用词格式化,用\n分开,返回一个列表 f_stop_seg_list = f_stop_text.split("\n") # 对默认模式分词的进行遍历,去除停用词 for myword in listStr.split('/'): # 去除停用词 if not (myword.split()) in f_stop_seg_list and len(myword.strip()) > 1: mywordList.append(myword) return ' '.join(mywordList) # 生成词云图 def make_wordcloud(text1): text1 = text1.replace("悲伤逆流成河", "") bg = plt.imread(d + "/static/znn1.jpg") # 生成 wc = WordCloud( # FFFAE3 background_color="white", # 设置背景为白色,默认为黑色 width=890, # 设置图片的宽度 height=600, # 设置图片的高度 mask=bg, # margin=10, # 设置图片的边缘 max_font_size=150, # 显示的最大的字体大小 random_state=50, # 为每个单词返回一个PIL颜色 font_path=d + '/static/simkai.ttf' # 中文处理,用系统自带的字体 ).generate_from_text(text1) # 为图片设置字体 my_font = fm.FontProperties(fname=d + '/static/simkai.ttf') # 图片背景 bg_color = ImageColorGenerator(bg) # 开始画图 plt.imshow(wc.recolor(color_func=bg_color)) # 为云图去掉坐标轴 plt.axis("off") # 画云图,显示 # 保存云图 wc.to_file(d + r"/picture/word_cloud.png") # 评论者性别分布可视化 def sex_distribution(gender): # print(gender) from pyecharts import Pie list_num = [] list_num.append(gender.count('0')) # 未知 list_num.append(gender.count('1')) # 男 list_num.append(gender.count('2')) # 女 attr = ["其他", "男", "女"] pie = Pie("性别饼图") pie.add("", attr, list_num, is_label_show=True) pie.render(d + r"\picture\sex_pie.html") # 评论者所在城市分布可视化 def city_distribution(cityName): city_list = list(set(cityName)) city_dict = {city_list[i]: 0 for i in range(len(city_list))} for i in range(len(city_list)): city_dict[city_list[i]] = cityName.count(city_list[i]) # 根据数量(字典的键值)排序 sort_dict = sorted(city_dict.items(), key=lambda d: d[1], reverse=True) city_name = [] city_num = [] for i in range(len(sort_dict)): city_name.append(sort_dict[i][0]) city_num.append(sort_dict[i][1]) import random from pyecharts import Bar bar = Bar("评论者城市分布") bar.add("", city_name, city_num, is_label_show=True, is_datazoom_show=True) bar.render(d + r"\picture\city_bar.html") # 每日评论总数可视化分析 def time_num_visualization(time): from pyecharts import Line time_list = list(set(time)) time_dict = {time_list[i]: 0 for i in range(len(time_list))} time_num = [] for i in range(len(time_list)): time_dict[time_list[i]] = time.count(time_list[i]) # 根据数量(字典的键值)排序 sort_dict = sorted(time_dict.items(), key=lambda d: d[0], reverse=False) time_name = [] time_num = [] print(sort_dict) for i in range(len(sort_dict)): time_name.append(sort_dict[i][0]) time_num.append(sort_dict[i][1]) line = Line("评论数量日期折线图") line.add( "日期-评论数", time_name, time_num, is_fill=True, area_color="#000", area_opacity=0.3, is_smooth=True, ) line.render(d + r"\picture\c_num_line.html") # 评论者猫眼等级、评分可视化 def level_score_visualization(userLevel, score): from pyecharts import Pie userLevel_list = list(set(userLevel)) userLevel_num = [] for i in range(len(userLevel_list)): userLevel_num.append(userLevel.count(userLevel_list[i])) score_list = list(set(score)) score_num = [] for i in range(len(score_list)): score_num.append(score.count(score_list[i])) pie01 = Pie("等级环状饼图", title_pos='center', width=900) pie01.add( "等级", userLevel_list, userLevel_num, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient="vertical", legend_pos="left", ) pie01.render(d + r"\picture\level_pie.html") pie02 = Pie("评分玫瑰饼图", title_pos='center', width=900) pie02.add( "评分", score_list, score_num, center=[50, 50], is_random=True, radius=[30, 75], rosetype="area", is_legend_show=False, is_label_show=True, ) pie02.render(d + r"\picture\score_pie.html") time = [] nickName = [] gender = [] cityName = [] userLevel = [] score = [] content = '' content = read_csv() # 1 词云 jiebaclearText(content) make_wordcloud(content) # pyecharts词云 # word_cloud(content) # 2 性别分布 sex_distribution(gender) # 3 城市分布 city_distribution(cityName) # 4 评论数 time_num_visualization(time) # 5 等级,评分 level_score_visualization(userLevel, score)
nltk统计在超过5000条记录中出现的词
dataframe中某一列为文本 现在想统计出在超过5000条记录中出现的词,有什么函数可以用吗? ![图片说明](https://img-ask.csdn.net/upload/201904/04/1554390015_518241.png) 处于没有思路的状态...
pandas写入csv,字段行业一直重复怎么解决???
import requests import json import re import csv import pandas as pd # 获取每个电影分类链接的函数 def get_movie_type(): url='https://movie.douban.com/chart' resp=requests.get(url) result=re.findall(r'<span><a href="(/typerank\?type_name=.*?)">(.*?)</a></span>',resp.text) return result # 获取每种电影前100部: def get_movie_rank(type_url): type_url = 'https://movie.douban.com/j/chart/top_list?' + type_url[23:] + '&start=0&limit=100' resp=requests.get(type_url) return resp.text # 存储 def save(movie): movie=pd.DataFrame([movie],columns=['类型','电影名称','地区','上映日期','评分','排行','地址']) movie.to_csv(r'C:\Users\Administrator\Desktop\python\练习\第五周作业_周峰\test3.csv',mode='a',index=None) def run(): types_url=get_movie_type() for url in types_url: global movie_type_name movie_type_name = url[1] print('正在储存'+movie_type_name+'类型的电影') type_url = url[0] result=get_movie_rank(type_url) #json解析 result=json.loads(result) #获取所需电影信息 for massage in result: #global title,regions,release_date,score,rank,movieurl title=massage['title'] regions=massage['regions'][0] release_date=massage['release_date'] score=massage['score'] rank = massage['rank'] url = massage['url'] movie=[movie_type_name,title,regions,release_date,score,rank,url] # 储存包含电影信息 save(movie) print(movie_type_name + '的类型储存完毕!') run() ![图片说明](https://img-ask.csdn.net/upload/201908/07/1565160682_681298.png)
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问