读取csv文件,打印列名称:

import pandas as pd

# data = pd.read_csv("guba_fc_result_20230413.csv")

data = pd.read_csv("guba_all_newtext_20230413.csv")
data.columns

  

保存文件:

data.to_csv("guba_all_cutwords_20230413.csv",index=False)

  

统计:

data['ticker_name'].value_counts()

  

字符串长度过滤:

filtered_df = data[data['matches'] != '[]']

long_text = filtered_df[filtered_df['text'].str.len() > 100]

  

画字符串长度直方图:

import numpy as np
from matplotlib import pyplot as plt len_text = [len(text) for text in filtered_df['text']]
#len_text = [len(text) for text in data['content']]
#len_text = [len(text) for text in data['rateContent']] plt.figure(figsize=(20,8),dpi=80)
plt.hist(len_text,bins=20)
plt.show()

  

按字符串名称过滤:

v_data = data[data['ticker_name'].isin(['迈瑞医疗'])]
v_data = v_data[v_data['post_date'].isin(['2023-03-01'])]

  

去除nan值:

data.dropna(inplace=True)

  

合并同名称的数据:

#所有的相同股票的数据合并在一起

# 根据ticker_name列对数据进行分组,并将每个分组的seg数据合并在一起
data = data.groupby('ticker_name')['seg'].apply(lambda x: ' '.join(x)).reset_index()
data

  

按字符串长度过滤数据:

# 计算seg列中词个数
data['word_count'] = data['seg'].str.split().apply(len) # 保留词个数超过200的行
data = data[data['word_count'] > 200] # 移除word_count列
data = data.drop('word_count', axis=1)
data

  

统计分词词数:

word_counts = data.groupby('ticker_name')['seg'].apply(lambda x: sum(len(text.split()) for text in x)).reset_index()

# 输出结果
print(word_counts)

  

对分词结果分组,保存新的行:

import math

def split_seg(seg, chunk_size):
chunks = []
words = seg.split()
num_chunks = math.ceil(len(words) / chunk_size)
# print("num_chunks:",num_chunks)
for i in range(num_chunks):
start = i * chunk_size
end = start + chunk_size
chunk = ' '.join(words[start:end])
chunks.append(chunk)
return chunks # 分割seg列
new_rows = []
for _, row in data.iterrows():
ticker_name = row['ticker_name']
seg = row['seg']
num_words = len(seg.split())
if num_words > 1000:
chunked_segs = split_seg(seg, 3000)
for i, chunk in enumerate(chunked_segs):
new_ticker_name = ticker_name + '_' + str(i)
new_rows.append({'ticker_name': new_ticker_name, 'seg': chunk})
else:
new_rows.append({'ticker_name': ticker_name, 'seg': seg}) # 创建新的DataFrame
new_data = pd.DataFrame(new_rows)
new_data

  

对分组分词使用tfidf算法:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer # 定义tokenizer函数
def tokenizer(text):
return text.split() # 计算tf-idf值
tfidf = TfidfVectorizer(tokenizer=tokenizer, stop_words='english')
tfidf_matrix = tfidf.fit_transform(new_data['seg']) # 获取特征名列表
feature_names = tfidf.get_feature_names() # 遍历每篇文章
for _, group in new_data.groupby('ticker_name'):
# 获取tf-idf矩阵
tfidf_scores = tfidf_matrix[group.index, :] # 计算每个词的tf-idf值
word_scores = list(zip(feature_names, tfidf_scores.sum(axis=0).tolist()[0])) # 按tf-idf值从大到小排序
word_scores = sorted(word_scores, key=lambda x: x[1], reverse=True) # 打印文章中tf-idf值最高的前10个词
print(group['ticker_name'].iloc[0])
for word, score in word_scores[:10]:
print(word, score)
print()

  

pandas 数据处理 一些常用操作的更多相关文章

  1. pandas数据分析API常用操作

    1.导入数据 df = pd.read_csv( # 该参数为数据在电脑中的路径,可以不填写 filepath_or_buffer='/Users/Weidu/Desktop/sz000002.csv ...

  2. Pandas 之 DataFrame 常用操作

    import numpy as np import pandas as pd This section will walk you(引导你) through the fundamental(基本的) ...

  3. Pandas | Dataframe的merge操作,像数据库一样尽情join

    今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并. 常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起.第二种是我们新获取了一份数据集 ...

  4. (数据科学学习手札131)pandas中的常用字符串处理方法总结

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...

  5. ArcGIS中的坐标系:基本概念和常用操作(一)

    本文呢是主要是借鉴李郎平李大大的博士论文和百度百科,里面还有一点点我自己的理解,希望能帮助自己加深对于坐标系的认识. 李大大的博客:http://blog.sciencenet.cn/u/Brume ...

  6. pandas_时间序列和常用操作

    # 时间序列和常用操作 import pandas as pd # 每隔五天--5D pd.date_range(start = '',end = '',freq = '5D') ''' Dateti ...

  7. pandas_一维数组与常用操作

    # 一维数组与常用操作 import pandas as pd # 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) ...

  8. Stream常用操作以及原理探索

    Stream常用操作以及原理 Stream是什么? Stream是一个高级迭代器,它不是数据结构,不能存储数据.它可以用来实现内部迭代,内部迭代相比平常的外部迭代,它可以实现并行求值(高效,外部迭代要 ...

  9. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  10. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

随机推荐

  1. DRF_基本使用

    基本使用 视图内 from rest_framework.viewsets import ModelViewSet from app01 import models from app01 import ...

  2. gitee使用

    1.github的国内跳转 github国内无法直接访问,所以直接使用gitee导入github工程 https://gitee.com/     2.虚拟机配置ssh公钥 https://gitee ...

  3. FinOps首次超越安全成为企业头等大事丨云计算趋势报告

    随着云计算在过去十年中的广泛应用,云计算用户所面临的一个持续不变的趋势是:安全一直是用户面临的首要挑战.然而,这种情况正在发生转变. 知名IT软件企业 Flexera 对云计算决策者进行年度调研已经持 ...

  4. (续)关于jsp的小细节们

    (续集) 细节四:在浏览界面,点击主键对应的数据时,会跳转到其详细信息界面 这样就实现跳转详情页面啦!(jsp再进入一个servlet文件,获取到当前主键的值,然后再传回到另一个jsp文件,就可以实现 ...

  5. Java里的对象是咋回事

    前言 在上一篇文章中,壹哥给大家介绍了Java中的类及其特点.创建过程等内容,相信你现在已经知道该如何创建一个Java类了.接下来在本篇文章中,壹哥会继续带大家学习面向对象中关于对象的内容.其实类和对 ...

  6. 关于VUE3的疑问。

    1.响应式数据的声明 中 ref 与 reactive 有什么区别? 答:参考答案 .个人理解:ref最好用来定义基本数据类型,使用时要用.value :reactive最好用来定义引用数据类型.re ...

  7. python-爬虫-css提取-写入csv-爬取猫眼电影榜单

    猫眼有一个电影榜单top100,我们将他的榜单电影数据(电影名.主演.上映时间.豆瓣评分)抓下来保存到本地的excle中 本案例使用css方式提取页面数据,所以会用到以下库 import time i ...

  8. Proxmox VE镜像分析与定制

    Proxmox VE(Proxmox Virtual Environment,简称PVE)是一个开源的服务器虚拟化环境Linux发行版,基于Debian,使用给予Ubuntu的定制内核.相比于其他虚拟 ...

  9. pandas之sql操作

    我们知道,使用 SQL 语句能够完成对 table 的增删改查操作,Pandas 同样也可以实现 SQL 语句的基本功能.本节主要讲解 Pandas 如何执行 SQL 操作.首先加载一个某连锁咖啡厅地 ...

  10. [网络/Java EE/Web]Tomcat/Nginx中配置全局的安全响应头(header)——X-Frame-Options / X-XSS-Protection / X-Content-Options

    Step1 配置Tomcat step1.1 查看是否已配置目标的HTTP网络安全头 方式1 – Tomcat / conf/web.xml cat /opt/myTomcat/conf/web.xm ...