jupyterNotbook运行
目录
- 1.读取csv文件,转化为dataframe
- 2.获取字符串中特定的内容
- 3.字符串(str)与列表(list)相互转化
- 4.找到指定子字符串后面的数字
- 5.将dataframe写入Excel或者csv
- 6.从列表中删除元素(三种方法)
- 7. 判断对象是否可迭代
- 8. 利用zip将列表(list)组成字典(dict)
- 9. for i in range(len( ))
- 10. Python中sum与列表推导式方法
- 11. python数据处理——按列名选取dataframe的多列
- 12. dataframe 删除全为某数的列\满足某条件的行
- 13. 求列表的平均值
- 14. Python下pandas随机获取DataFrame中的数据
- 15.pandas dataframe数据提取的方法
- 16.取dataframe的一列或一行
1.读取csv文件,转化为dataframe
import pandas as pd
csv_file = "filename.csv"
csv_data = pd.read_csv(csv_file, low_memory = False)
csv_df = pd.DataFrame(csv_data)
csv_df
2.获取字符串中特定的内容
1. 获取两个字符之间的内容
def get_str_btw(s, f, b):
par = s.partition(f)
return (par[2].partition(b))[0][:]
例如:获取如下字串中的“THIS IS WHAT YOU WANT”:
string = “123 THIS IS WHAT YOU WANT 456”
get_str_btw(string, "123 ", " 456") #注意空格
#return “THIS IS WHAT YOU WANT”
2. 获取某字符后的int型
def get_int_after(s, f):
S = s.upper()
F = f.upper()
par = S.partition(F)
int_str = ""
for c in par[2]:
if c in ("-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"):
int_str += c
else:
if c == ":" or c == "=" or c == " ":
if int_str == "":
continue
break
try:
return int(int_str)
except:
print("Get Int After Fail")
print(f, s)
return "Parsing error"
例如: 获取如下字串中“Tput”的值:
string = "BLER0=7/100, BLER1=0/100, TRX=863 sf/s, Tput=29864840 bits/s, retx=8/100"
get_int_after(string, "Tput=")
#return 29864840
3. 获取某字符后的hex型
def get_hex_after(s, f):
par = s.partition(f)
hex = 0
for c in par[2]:
cap_c = c.capitalize()
if ord(cap_c) in range(ord("0"), ord("9") + 1):
hex *= 16
hex += ord(cap_c) - ord("0")
elif ord(cap_c) in range(ord("A"), ord("F") + 1):
hex *= 16
hex += ord(cap_c) - ord("A") + 10
else:
if c == ":" or c == "=" or c == " " or c =="x":
if hex == 0:
continue
break
return hex
例如: 获取如下字串中“PSN”的值:
string = "Write to SIT: SIT(idx=0, pri=0), si_idx=[1232, 1246), PSN=0x8F71"
get_hex_after(string, "PSN=")
#return 0x8F71
3.字符串(str)与列表(list)相互转化
1. 字符串(str)转列表(list)
str1 = "12345"
list1 = list(str1)
print list1
# 输出['1', '2', '3', '4', '5']
str2 = "123 sjhid dhi"
list2 = str2.split() #or list2 = str2.split(" ")
print list2
# 输出['123', 'sjhid', 'dhi']
str3 = "www.google.com"
list3 = str3.split(".")
print list3
# 输出['www', 'google', 'com']
2. 列表(list)转字符串(str)
str4 = "".join(list3)
print str4
# 输出wwwgooglecom
str5 = ".".join(list3)
print str5
# 输出www.google.com
str6 = " ".join(list3)
print str6
#输出www google com
4.找到指定子字符串后面的数字
import re
text='中国2020年经济。。。'
reg=re.compile(r"(?<=中国)\d+")
match=reg.search(text)
print (match.group(0))
# 输出结果2020
5.将dataframe写入Excel或者csv
df.to_csv(文件路径) # 将dataframe输出到csv文件中
df.to_excel(文件路径) # 将dataframe输出到excel文件中
df.to_csv(r'C:\Users\qingfeng\Desktop\df.csv',encoding='gbk')
6.从列表中删除元素(三种方法)
Python中提供了三种list删除元素的方式
1.remove删除方法
list1=[22,33,44,55,66,77,88,99,12,44,67,48,22]
list1.remove(22)
# 删除内容为22的元素,但是只默认删除第一个查询到的
# 如果想删除多个,则使用for循环可以做到
list1
#输出[33, 44, 55, 66, 77, 88, 99, 12, 44, 67, 48, 22]
2.del删除方法
list1=[22,33,44,55,66,77,88,99,12,44,67,48,22]
del list1[2] # 删除索引为2的内容
list1
# 输出 [22, 33, 55, 66, 77, 88, 99, 12, 44, 67, 48, 22]
3.pop删除方法
list1=[22,33,44,55,66,77,88,99,12,44,67,48,22]
list1.pop(4)
# 删除索引为4的内容,如果不写索引值,默认删除最后一个
list1
# 输出 [22, 33, 44, 55, 77, 88, 99, 12, 44, 67, 48, 22]
7. 判断对象是否可迭代
from collections import Iterable
isinstance('abc',Iterable)
8. 利用zip将列表(list)组成字典(dict)
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print (dictionary)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}
9. for i in range(len( ))
10. Python中sum与列表推导式方法
11. python数据处理——按列名选取dataframe的多列
data[['w','z']] #选择表格中的'w'、'z'列
12. dataframe 删除全为某数的列\满足某条件的行
import pandas as pd
from pandas import DataFrame
d2 = DataFrame({'a': [1, 1,1,1],
'b': [0,0, 0,0],
'c': [1, 10, 11, 12],
'd': [1, 14, 15, 16] })
d2
# 删除全为1的列
d3=d2.ix[:,~(d2==1).all()]
d3
# 删除包含0和1的列
d4=d2.ix[:,~((d2==1).all()|(d2==0).all())]
d4
# 删除df.d大于等于5且小于15的所有行
d6 = d2.drop(d2[(d2.d >= 5) & (d2.d < 15)].index)
d6
# 删除索引为d的列
d7 = d2.drop('d', axis=1)
d7
# 选取c列中包含数值1的行
d8=d2[d2['c'].isin([1])]
d8
#通过~取反,选取d2表中,c列内不包含数字1的行
d9=d2[~d2['c'].isin([1])]
d9
#删除/选取某行含有特定数值的列
cols=[x for i,x in enumerate(d2.columns) if d2.iat[0,i]==1]
#利用enumerate对row0进行遍历,将含有数字3的列放入cols中
print(cols)
d10=d2.drop(cols,axis=1) #利用drop方法将含有特定数值的列删除
d10
import pandas as pd
import numpy as np
df1 = pd.DataFrame(
[
[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, 4]
],columns=list('ABCD'))
print('df1表格','\n',df1,'\n')
df2=df1.copy()
df1['A']=df1['A'].fillna('null') #将df中A列所有空值赋值为'null'
print('df1表格-空值赋为null','\n',df1,'\n')
df1=df1[~df1['A'].isin(['null'])]
print('通过取反,获取df1表格中,A列中不含null的行','\n',df1,'\n')
#删除某行空值所在列
df2[0:1]=df2[0:1].fillna('null')
print('将df1中[0:1]行中的控制赋值为null,并命名为df2','\n',df2,'\n')
cols=[x for i,x in enumerate(df2.columns) if df2.iat[0,i]=='null']
print('获取df2中,值为null的列','\n',cols,'\n')
df2=df2.drop(cols,axis=1)
print('将df2中,满足col的列删去,并重新赋值df2','\n',df2)
13. 求列表的平均值
from numpy import *
a = [52,69,35,65,89,15,34]
b = mean(a)
print(b) # 输出51.285714285714285
14. Python下pandas随机获取DataFrame中的数据
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
n:表示你要随机抽取几行数据,比如你要抽取10行,n=10。不能与frac同时使用
frac:浮点型,可选。表示抽取数据的百分比,当不确定n的具体值的时候使用。不能与n同时使用
replace:布尔值,可选。原来的DataFrame是否被抽取的数据替换,默认为False.如果n取值大于原DataFrame的长度,replace为True,可返回结果。否则会因dataFrame长度不够而报错。
weights:权重,字符串或者数组格式,可选。通过设置不同的权重可以增加相应数据被选中的概率。
random_state:随机种子数
axis: 整数型或字符串,可选。可以是表示轴向的数据(0,1)或名称。当抽取数据的时候是从行中抽取数据,还是从列中抽取数据。0表示纵向坐标轴,1表示横向坐标轴。
import pandas as pd
from pandas import DataFrame
d2 = DataFrame({'a': [1, 1,1,1],
'b': [0,0, 0,0],
'c': [1, 10, 11, 12],
'd': [1, 14, 15, 16] })
d2
d2.sample(n=1,axis=1)
15.pandas dataframe数据提取的方法
import numpy as np
from pandas import DataFrame
import pandas as pd
df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd'))
df['a']#取a列
df[['a','b']]#取a、b列
#ix可以用数字索引,也可以用index和column索引
df.ix[0]#取第0行
df.ix[0:1]#取第0行
df.ix['one':'two']#取one、two行
df.ix[0:2,0]#取第0、1行,第0列
df.ix[0:1,'a']#取第0行,a列
df.ix[0:2,'a':'c']#取第0、1行,abc列
df.ix['one':'two','a':'c']#取one、two行,abc列
df.ix[0:2,0:1]#取第0、1行,第0列
df.ix[0:2,0:2]#取第0、1行,第0、1列
#loc只能通过index和columns来取,不能用数字
df.loc['one','a']#one行,a列
df.loc['one':'two','a']#one到two行,a列
df.loc['one':'two','a':'c']#one到two行,a到c列
df.loc['one':'two',['a','c']]#one到two行,ac列
#iloc只能用数字索引,不能用索引名
df.iloc[0:2]#前2行
df.iloc[0]#第0行
df.iloc[0:2,0:2]#0、1行,0、1列
df.iloc[[0,2],[1,2,3]]#第0、2行,1、2、3列
#iat取某个单值,只能数字索引
df.iat[1,1]#第1行,1列
#at取某个单值,只能index和columns索引
df.at['one','a']#one行,a列
16.取dataframe的一列或一行
df['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类型
df.w #选择表格中的'w'列,使用点属性,返回的是Series类型
df[['w']] #选择表格中的'w'列,返回的是DataFrame属性
data[0:2] #返回第1行到第2行的所有行,前闭后开,包括前不包括后
data[1:2] #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,如果采用data[1]则报错
data.iloc[-1] #选取DataFrame最后一行,返回的是Series
data.iloc[-1:] #选取DataFrame最后一行,返回的是DataFrame
读取txt文档,写入嵌入列表
链接汇总:
beautifulsoup 4.2.0 中文文档:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
《Python数据挖掘方法及应用》一书代码及数据:
https://gitee.com/Py-R/PyDm/blob/master/code/PyDm_code.py
百度地图开放平台API调用:
http://lbsyun.baidu.com/index.php?title=uri/api/web
matplotlib官网-用法解释:
https://matplotlib.org/api/pyplot_summary.html
python读写excel等数据文件方法汇总:
https://zhuanlan.zhihu.com/p/104524969?utm_source=wechat_session&utm_medium=social&utm_oi=608238503788810240
参考链接:
https://blog.csdn.net/weekdawn/article/details/81389234
https://blog.csdn.net/csdnshutdown/article/details/83505286
https://blog.csdn.net/roytao2/article/details/53433373
https://blog.csdn.net/q357010621/article/details/78744759
https://jingyan.baidu.com/article/af9f5a2d78489b43140a45e4.html
https://blog.csdn.net/ialexanderi/article/details/78194790
https://blog.csdn.net/m0_37876745/article/details/85288155
https://blog.csdn.net/qxqxqzzz/article/details/88352576
https://blog.csdn.net/luocheng7430/article/details/80330566
https://blog.csdn.net/weixin_41789707/article/details/80930274
https://blog.csdn.net/d1240673769/article/details/79858434