不用pandas的包
时间: 2024-10-08 19:13:07 浏览: 25
在Python中,如果不想使用pandas这样的数据分析库来处理CSV文件,你可以选择一些基础的内置模块或者第三方库,如`csv`模块。例如,如果你想要读取CSV文件并移除制表符,可以这样做:
```python
import csv
with open('file.csv', 'r', newline='') as file: # 'newline=' 防止多余的空行
reader = csv.reader(file, delimiter='\t') # 使用制表符作为分隔符
data = []
for row in reader:
cleaned_row = [cell.replace('\t', '') for cell in row] # 在列表推导式中去除制表符
data.append(cleaned_row)
data = pd.DataFrame(data) # 转换成DataFrame格式,虽然不是pandas,但类似功能
```
这种方法简单直接,适用于小型数据集或简单的处理任务。然而,对于大规模的数据分析,pandas的功能更为强大且高效。
相关问题
文本文件(.csv文件可以作为文本文件处理)中保存了图书馆藏书信息,每条藏书记录占一行 数据字段说明: LIBRARY_ID:藏馆ID(可能有多个藏馆) REC_CTRL_I:录入编号 BOOK_BARCO:图书条码 DEPARTMENT:所属部门 BOOK_SEARC:索书号 TITLE:图书名称 ISN:ISBN出版号 AUTHORS:作者 PUBLISHER:出版社 PUBDATE_DA:出版时间 BOOK_ATTRI:图书属性 BOOK_STATU:图书状态 (用函数定义,不用pandas)列出所有书名中包括“开发”字样的藏书和这些藏书所属的出版社,函数定义(不用pandas)统计每个出版社的”开发“字样藏书数量,用函数定义(不用pandas)按照该藏书数量降序输出,数量相同按照出版社名字升序。用函数定义(不用pandas)将结果写入result.txt文件中
好的,下面是代码实现:
```python
def find_books_with_keyword(file_path, keyword):
book_list = []
with open(file_path, 'r') as f:
for line in f:
if keyword in line:
book_info = line.strip().split(',')
book_name = book_info[6]
publisher = book_info[9]
book_list.append((book_name, publisher))
return book_list
def count_books_by_publisher(book_list):
publisher_dict = {}
for book in book_list:
publisher = book[1]
if publisher not in publisher_dict:
publisher_dict[publisher] = 1
else:
publisher_dict[publisher] += 1
return publisher_dict
def sort_publishers_by_book_count(publisher_dict):
sorted_publishers = sorted(publisher_dict.items(), key=lambda x: (-x[1], x[0]))
return sorted_publishers
def write_result_to_file(file_path, sorted_publishers):
with open(file_path, 'w') as f:
for publisher in sorted_publishers:
f.write(publisher[0] + ',' + str(publisher[1]) + '\n')
if __name__ == '__main__':
file_path = 'book_info.csv'
keyword = '开发'
book_list = find_books_with_keyword(file_path, keyword)
publisher_dict = count_books_by_publisher(book_list)
sorted_publishers = sort_publishers_by_book_count(publisher_dict)
write_result_to_file('result.txt', sorted_publishers)
```
代码中,`find_books_with_keyword`函数用于查找包含关键字的书籍信息,返回一个列表,列表中每个元素是一个元组,元组中第一个元素是书名,第二个元素是出版社。
`count_books_by_publisher`函数用于统计每个出版社包含关键字的书籍数量,返回一个字典,键是出版社名,值是包含关键字的书籍数量。
`sort_publishers_by_book_count`函数用于将出版社进行排序,先按照包含关键字的书籍数量降序排序,再按照出版社名字升序排序。
`write_result_to_file`函数用于将排序后的结果写入文件。
在程序中,我们可以通过修改`file_path`和`keyword`参数来处理不同的CSV文件和不同的关键字。执行程序后,将会在当前目录下生成`result.txt`文件,文件中包含按照要求排序后的结果。
如何将从python中爬虫到的数据保存到Excel表格中不用pandas库
在Python中,如果不使用pandas库,你还可以使用`openpyxl`或`xlsxwriter`这样的库来将爬取到的数据保存到Excel表格中。以下是使用`openpyxl`库保存数据的一个简单示例:
首先,你需要安装`openpyxl`库(如果你还没有安装的话):
```bash
pip install openpyxl
```
然后,你可以按照以下步骤将数据写入Excel:
```python
from openpyxl import Workbook
# 创建一个工作簿对象
wb = Workbook()
# 选择默认的工作表
ws = wb.active
# 假设我们从爬虫得到的数据是一个列表,每个元素也是一个包含多个值的列表
data = [
["姓名", "年龄", "职业"],
["张三", "28", "工程师"],
["李四", "25", "设计师"],
["王五", "30", "产品经理"]
]
# 将数据写入工作表的相应位置
for row in data:
ws.append(row)
# 保存工作簿到文件
wb.save("output.xlsx")
```
上面的代码将创建一个包含三列数据的Excel文件,分别是姓名、年龄和职业。
如果你想要更灵活地控制数据的写入,还可以直接指定行和列来写入单个值,例如:
```python
# 写入特定的单元格
ws['A1'] = '姓名'
ws['B1'] = '年龄'
ws['C1'] = '职业'
ws['A2'] = '张三'
ws['B2'] = 28
ws['C2'] = '工程师'
```
请确保在写入单元格之前创建工作表以及相应的行列索引,否则可能会遇到错误。
阅读全文