读取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. JML

    1.JML规格设计策略 我三次作业采用的方法都是从性能与存储大小方面考虑.在满足规格的条件下尽量做到运行速度最快,所用空间最小.因为这个单元的作业如果单单只是照着jml规格来翻译的话就失去了意义(因为 ...

  2. 登录:ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME

    问题描述:在用pl/sql登录soctt用户时,显示: 解决办法:在tnsnames.ora文件中添加(文件位置的查找方法见文章末尾) ORCL = (DESCRIPTION = (ADDRESS = ...

  3. classpath、path、JAVA_HOME的作用及JAVA环境变量配置 (转)

    CLASSPATH是什么?它的作用是什么? 它是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util.*时,编译器面对import ...

  4. vite不能用@做为路径的解决方法

    vite创建vue3后,发现原来用@做为路径的不能用了,报错信息是 Internal server error: Failed to resolve import "@ 在网上查了一下资料, ...

  5. React数字滚动组件 numbers-scroll

    数字滚动组件,也可以叫数字轮播组件,这个名字一听就是非常普通常见的组件,第一反应就是想找找网上大佬的东西顶礼膜拜一下,这一搜,还真是没找到趁手的╮(╯▽╰)╭. 最近接了大屏的需求,数字滚动肯定是免不 ...

  6. RHEL8使用NMCLI管理网络

    使用 NMCLI 配置静态以太网连接 要在命令行上配置以太网连接,请使用 nmcli 工具. 例如,以下流程使用以下设置为 enp7s0 设备创建 NetworkManager 连接配置文件: 静态 ...

  7. Solon2 接口开发: 强化 Gateway 模式

    一般可以从这几方面对 Gateway 模式进行强化: 定制异常状态码 定制基类 将一些处理独立封装成类 接口只返回数据部份,异常状态用抛 强化之后,具体的网关即简单,又功能强大.同时会对团队开发形成一 ...

  8. WordPress回复/评论本文可见

    给WordPress添加一个实用的小功能,那就是回复可见,评论文章才能见到隐藏内容. 在主题目录下找到functions.php文件,在合适位置添加下方的代码: // 回复可见 function re ...

  9. 打工人都在用的AI工具(第一期)

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 随着ChatGPT的问世,AI也算迎来了高光时刻!下文是技术宅整理的一些和ChatGPT相关的工具应用, ...

  10. 为自己的博客添加2D虚拟人物

    2020-05-29 在自己申请完并获得了属于自己的博客后,我突然想着为自己的博客添砖加瓦,记起了之前看别人博客时,其充满独具个性,特立独行的风格,让我十分羡慕,最近看到了一个博客风格很有趣,其有趣之 ...