python怎样实现替换时怎么样能保留替换对象的大小写?python 可以做到,刚写的 。
def show_highlight(key: str, origin: str) - str:
"""字符串替换,忽略大小写,并返回以前的大小写"""
re_data = https://www.04ip.com/post/re.findall(key, origin, flags=re.IGNORECASE)
def tmp(obj):
for i in re_data:
if obj.group(0) == i: return 'span class="keyWord"'i'/span'
return re.sub(key, tmp, origin, flags=re.IGNORECASE)
print(show_highlight('AND', 'AND and And AnD'))
测试结果:
span class="keyWord"AND/span span class="keyWord"and/span span class="keyWord"And/span span class="keyWord"AnD/span
数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容 , 具体是怎么操作的?最近,Analysis with Programming加入了Planet Python 。我这里来分享一下如何通过Python来开始数据分析 。具体内容如下:
数据导入
导入本地的或者web端的CSV文件;
数据变换;
数据统计描述;
假设检验
单样本t检验;
可视化;
创建自定义函数 。
数据导入
1
这是很关键的一步,为了后续的分析我们首先需要导入数据 。通常来说,数据是CSV格式,就算不是 , 至少也可以转换成CSV格式 。在Python中,我们的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = ""
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块 。其中的read_csv函数能够读取本地和web数据 。
END
数据变换
1
既然在工作空间有了数据 , 接下来就是数据变换 。统计学家和科学家们通常会在这一步移除分析中的非必要数据 。我们先看看数据(下图)
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行 , 以及通过print(tail(df))来打印数据的后6行 。当然Python中,默认打印是5行,而R则是6行 。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理
请点击输入图片描述
2
在R语言中,数据列和行的名字通过colnames和rownames来分别进行提取 。在Python中,我们则使用columns和index属性来提?。?如下:
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
3
数据转置使用T方法 ,
# Transpose data
print df.T
# OUTPUT
0123456789
Abra12434158178717152126655769272154010395424
Apayao2934923519221450123857452109917038138210588
Benguet14842871955353625307712796246325921064
Ifugao33008063107419607331513134513414226684213828
Kalinga1055335257454431687852028252310636238497340140
...697071727374757677
Abra...12763247059094620913316250560303631113345
Apayao...3762519532351266335386132087840065675638902
Benguet...235440455987353025853519706235612583
Ifugao...9838171251894015560774619737194221591011096
Kalinga...657821527952437243856614816513618082334968663
78
Abra2623
Apayao18264
Benguet3745
Ifugao16787
Kalinga16900
Other transformations such as sort can be done using codesort/code attribute. Now let's extract a specific column. In Python, we do it using either codeiloc/code or codeix/code attributes, but codeix/code is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
4
其他变换,例如排序就是用sort属性 。现在我们提取特定的某列数据 。Python中 , 可以使用iloc或者ix属性 。但是我更喜欢用ix,因为它更稳定一些 。假设我们需数据第一列的前5行 , 我们有:
print df.ix[:, 0].head()
# OUTPUT 01243 14158 21787 317152 41266 Name: Abra, dtype: int64
5
顺便提一下,Python的索引是从0开始而非1 。为了取出从11到20行的前3列数据,我们有
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
1098113112560
1127366150933039
12110017012382
137212110011088
14104814272847
1525679156612942
16105521912119
1754376461734
18102911832302
1923710122222598
20109123432654
上述命令相当于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']] 。
6
为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet) , 我们使用drop属性,如下:
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
01243330010553
14158806335257
2178710744544
3171521960731687
4126633158520
axis 参数告诉函数到底舍弃列还是行 。如果axis等于0,那么就舍弃行 。
END
统计描述
1
下一步就是通过describe属性 , 对数据的统计特性进行描述:
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugaoKalinga
count79.00000079.00000079.00000079.00000079.000000
mean12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.5364295034.28201922245.707692
min927.000000401.000000148.0000001074.0000002346.000000
2524.0000003435.5000002328.0000008205.0000008601.500000
50W90.00000010588.0000003202.00000013044.00000024494.000000
75330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
END
假设检验
1
【rep函数python rep函数r语言】Python有一个很好的统计推断包 。那就是scipy里面的stats 。ttest_1samp实现了单样本t检验 。因此,如果我们想检验数据Abra列的稻谷产量均值,通过零假设,这里我们假定总体稻谷产量均值为15000,我们有:
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值组成的元祖:
t : 浮点或数组类型t统计量
prob : 浮点或数组类型two-tailed p-value 双侧概率值
2
通过上面的输出 , 看到p值是0.267远大于α等于0.05,因此没有充分的证据说平均稻谷产量不是150000 。将这个检验应用到所有的变量,同样假设均值为15000,我们有:
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385,1.07053437, -65.81425599,-4.564575,6.17156198]),
array([2.62704721e-01,2.87680340e-01,4.15643528e-70,
1.83764399e-05,2.82461897e-08]))
第一个数组是t统计量,第二个数组则是相应的p值
END
可视化
1
Python中有许多可视化模块 , 最流行的当属matpalotlib库 。稍加提及,我们也可选择bokeh和seaborn模块 。之前的博文中 , 我已经说明了matplotlib库中的盒须图模块功能 。
请点击输入图片描述
2
# Import the module for plotting
import matplotlib.pyplot as plt
plt.show(df.plot(kind = 'box'))
现在 , 我们可以用pandas模块中集成R的ggplot主题来美化图表 。要使用ggplot , 我们只需要在上述代码中多加一行,
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default' # Sets the plotting display theme to ggplot2
df.plot(kind = 'box')
3
这样我们就得到如下图表:
请点击输入图片描述
4
比matplotlib.pyplot主题简洁太多 。但是在本文中,我更愿意引入seaborn模块,该模块是一个统计数据可视化库 。因此我们有:
# Import the seaborn library
import seaborn as sns
# Do the boxplot
plt.show(sns.boxplot(df, widths = 0.5, color = "pastel"))
请点击输入图片描述
5
多性感的盒式图,继续往下看 。
请点击输入图片描述
6
plt.show(sns.violinplot(df, widths = 0.5, color = "pastel"))
请点击输入图片描述
7
plt.show(sns.distplot(df.ix[:,2], rug = True, bins = 15))
请点击输入图片描述
8
with sns.axes_style("white"):
plt.show(sns.jointplot(df.ix[:,1], df.ix[:,2], kind = "kde"))
请点击输入图片描述
9
plt.show(sns.lmplot("Benguet", "Ifugao", df))
END
创建自定义函数
在Python中,我们使用def函数来实现一个自定义函数 。例如,如果我们要定义一个两数相加的函数,如下即可:
def add_2int(x, y):
return xy
print add_2int(2, 2)
# OUTPUT
4
顺便说一下,Python中的缩进是很重要的 。通过缩进来定义函数作用域,就像在R语言中使用大括号{…}一样 。这有一个我们之前博文的例子:
产生10个正态分布样本,其中和
基于95%的置信度,计算和 ;
重复100次; 然后
计算出置信区间包含真实均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbarss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mulow)(muup):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are "str(inside)" confidence intervals that contain "
"the true mean ("str(mu)"), that is "str(per)" percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单 , 但是循环的时候就很慢了 。下面针对上述代码进行了改进,这多亏了 Python专家
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbarscaled_crit
rem = (mulow)(muup)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are "str(inside)" confidence intervals that contain "
"the true mean ("str(mu)"), that is "str(per)" percent of the total CIs"
return {"Matrix": m, "Decision": desc}
Python3 先判断输入的是不是数字,若不是,则输出“输入无效 , 卿输入一个数字”def askNumber():
question='请输入一个数字'
rep=False
while not rep:
try:
rep =int(input(question))
except:
rep=False
question ='输入无效rep函数python,请输入一个数字'
return rep
num=askNumber()
if num 0:
print('输入rep函数python的是正数')
pass
elif num==0:
pass
else:
pass
python替换最后一个字符python代码编程中用re模块通过正则匹配rep函数python的方式rep函数python,替换一个字符串rep函数python的最后一个字符,代码如下:
import re
//用X替换后面的abc
replace_reg = re.compile(r'abc$')
print replace_reg.sub('X', '123abc')
#运行结果:'123X'
如何用python删除txt中指定段落的内容? 比如txt内容是xy我import re
text=open(r"test.txt").read()()
rep=re.escape(r"y")
text=re.sub("a\n" rep "\nb","a\nb",text)
f=open(r"test.txt","w")
f.write(text)
f.close()
如何用python写这个代码file_name = "C:/Users/PC/Desktop/sample.csv"
import pandas as pd
def readDataFromCSVFile(file_name):
data = https://www.04ip.com/post/pd.read_csv(file_name)
col_names = data.columns
dic = []
for i in range(len(data)):
d_tmp = {}
for col in col_names:
d_tmp[col] = data[col][i]
dic.append(d_tmp)
return dic
res = readDataFromCSVFile(file_name)
运行环境:python2.7有问题欢迎追问
关于rep函数python和rep函数r语言的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 快手直播怎么不能放音乐,快手直播间放音乐别人听不见怎么回事
- 抖音的拍摄思路是什么,抖音的拍摄思路是什么意思
- 虚拟机重启图标黑屏,虚拟机重启图标黑屏怎么回事
- 帮网红做直播号运营,帮网红做直播号运营怎么样
- vb.net向服务器发包 vb上传文件到服务器
- 堆叠世界小程序怎么做,堆叠nand
- 无机产品如何推广销售,无机产品有哪些
- word方块怎么打,Word方块怎么打
- linuxsox命令 linux o命令