python常用编程记录


本文将对本人一些编程经验进行总结,包括对dataframe格式数据的操作,python对txt、doc、docx、word等文件的读写、jieba分词、画直方图、线性回归图、网页数据的爬取

DataFrame数据筛选两列

比如Data[[“A”,“B”]],A和B为Data的两列

参考链接:https://blog.csdn.net/appleyuchi/article/details/100701729

DataFrame更改索引

用reset_index重新生成顺序索引

Data=Data.reset_index(drop=True)

表示将行索引重置为1,2,3,…,drop=True表示不保留原来的行索引为另外的一列

reindex重置索引

假设原来的行索引为[“B”,“A”],重置为[“A”,“B”]

Data=Data.reindex([“A”,“B”],axis=“rows”),不会改变行索引对应的其他列的值

要是想改变列索引

Data=Data.reindex([“col1”,“col2”],axis=“columns”)

参考链接:

https://blog.csdn.net/weixin_44781801/article/details/91982123

只改变某一列的列名

Data=Data.rename(columns={“wc”:“wc_sum”})

Data中某一列的列名为"wc",我们想要换成"wc_sum",只需要上面那样写就可以了,不用同时写上其他不需要改变的列

dataframe中将某一列的值整体映射为另一个值的集合

除了使用.apply(func之外),还可以使用map

比如数据如下所示:
​​在这里插入图片描述
我们要将name这一列里面的值映射为缩写,字典如下:

lookup = {'apple': 'aapl', 
'microsoft': 'msft', 
'general motors': 'gm', 
'ford': 'f', 
'oracle': 'orcl', 
'amazon': 'amzn', 
'cisco': 'csco', 
'dell': 'dell', 
'intel': 'intl',
'adobe ': 'adbe'
}

我们可以使用

data1['id_ticker'] = data1['name'].map(lookup)

结果如下:
在这里插入图片描述

获得dataframe行名和列名

dfname._stat_axis.values.tolist() # 行名称
dfname.columns.values.tolist()    # 列名称

查看python版本

(1)命令行下

python -V

(2)Jupyter和pycharm下:

import sys 
sys.version

dataframe删除某一列

比如我们的Data数据如下:

在这里插入图片描述
我们要删除列year,使用命令

Data.drop(["year"],axis=1)

Dataframe行列索引转置

我们的Data数据如下:
在这里插入图片描述
我们想要将行列索引互换,得到如下的格式:
在这里插入图片描述
使用编程

Data=Data.stack()
Data=Data.unstack(0)

就可以了
参考链接:
https://blog.csdn.net/u013817676/article/details/94861359

DataFrame如何将行索引设置为新的一列

Data["Name"]=Data._stat_axis.values.tolist()
#或者
Data=Data.reset_index(drop=False)

创建DataFrame

参考链接

https://blog.csdn.net/weixin_41855010/article/details/104268815

python读写、创建txt文件

将text内容读取到一个列表里面

三种方法

#方法1
f=open("mytext.txt","r",encoding="utf-8")
List=f.readlines()
f.close()
#方法2
List=[]
for line in open("mytext.txt",'r',encoding="utf-8"):
    #可以对每行进行操作,比如去掉每行首尾的换行符"\n",strip函数可以去掉首尾的字符,但是不能去掉中间的
    line=line.strip("\n").split(",")
    List.append(line)
#方法3
#with的打开方式可以自动执行close,避免忘记关掉而不能进行删除、移动文件等操作
with open("mytext.txt",'r',encoding="utf-8") as f:
    for line in f:
        List.append(line)

在执行open时,如果没有这个文件,会自动创建一个新的文件

参考链接https://www.cnblogs.com/youyou0/p/8921719.html

单独创建txt文件

import os
os.mkdir(path)

将list写入txt文件中

将一个列表格式的数据List写入txt文件中:

file= open('MyText.txt', 'w',encoding='utf-8')
for fp in List:
    file.write(str(fp))
    file.write('\n')
file.close()

python对word文档(.doc或者.docx)的读写

这里只说明一个读文字段落:

from docx import Document
doc = Document('demo.docx')
#每一段的内容
for para in doc.paragraphs:
    print(para.text)
#每一段的编号、内容
for i in range(len(doc.paragraphs)):
    print(str(i),  doc.paragraphs[i].text)

其他内容参考链接:

https://www.cnblogs.com/gdjlc/p/11407587.html

里面有详细说明

使用jieba进行中英文分词

import jieba
List=list(jieba.cut("我们都是好孩子"))

结果:

['我们', '都', '是', '好孩子']

画出两个变量的线性回归图

import seaborn as sns
sns.pairplot(data_plot, x_vars='wc_sum', y_vars='intan_ast', size=7, aspect=0.8,kind = 'reg')
#plt.savefig("pairplot.jpg")
plt.show()

data_plot是一个包含两行[“wc_sum”]和[“intan_ast”]的dataframe数据

结果如下:
在这里插入图片描述

画条形图

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)  
plt.bar([1, 3, 5, 7, 9], [5, 4, 8, 12, 7], label='graph 1')
plt.bar([2, 4, 6, 8, 10], [4, 6, 8, 13, 15], label='graph 2')
# params
# x: 条形图x轴
# y:条形图的高度
# width:条形图的宽度 默认是0.8
# bottom:条形底部的y坐标值 默认是0
# align:center / edge 条形图是否以x轴坐标为中心点或者是以x轴坐标为边缘

plt.legend()
plt.xlabel('number')
plt.ylabel('value')
plt.title(u'测试例子——条形图', FontProperties=font)
plt.show()

结果如下:
在这里插入图片描述
参考链接:

https://blog.csdn.net/xjl271314/article/details/80295935

利用requests爬取网页数据

import requests
import pandas as pd
from bs4 import BeautifulSoup
_AGENT= 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0'
pr_url_1 = 'https://news.microsoft.com/2018/10/04/redline-communications-and-microsoft-announce-partnership-to-lower-the-cost-of-tv-white-space-solutions/'
#第一步:获取网页内容,一般是不需要headers的,headers里面放的是用户代理码,
pr_req_1 = requests.get(pr_url_1, headers={'User-Agent': _AGENT})
#第二步:将网页内容解析成各个标签的形式,或者说字典的形式
pr_soup_1 = BeautifulSoup(pr_req_1.text)
#第三步:使用find或者find_all,选取自己想要的标签下面的内容,比如下面就是选取标签meta下面属性为article:published_time的值
pr_soup_1.find('meta', property='article:published_time')['property']

需要注意的有以下几点:

(1)如何得到agent码

使用fake-useragent库就可以解决该问题。

生成不同浏览器的代理Agent:

from fake_useragent import UserAgent
ua = UserAgent()
 
ua.ie
# Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US);
ua.msie
# Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)'
ua['Internet Explorer']
# Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)
ua.opera
# Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11
ua.chrome
# Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2'
ua.google
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13
ua['google chrome']
# Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
ua.firefox
# Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
ua.ff
# Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
ua.safari
# Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25
 
# 最好的,通过真实世界的浏览器使用统计随机
ua.random

参考链接:

https://blog.csdn.net/zhangmoyan9527/article/details/82894295?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

将dataframe数据转置(行变成列,列变成行)

初始数据是这样的:
在这里插入图片描述
转置之后数据是这样的:
在这里插入图片描述
假设原来数据的变量名为Para,那么对应的操作为:

Para.stack().unstack(0)

参考链接:
https://blog.csdn.net/qq_38788128/article/details/80769292
未完待续…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skj1995

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值