一.实现某列的去重,只保留其中一行的数据内容:
使用drop_duplicates方法来实现数据去重,实现方式如下:
test = test.drop_duplicates("标题")
二.删除某一列中含有’万’字的数字,并将其替换为数字:
test1 = test['bofang_num']
p = -1
for i in test['bofang_num']:
p+=1
if i.find("万") !=-1:
print(i)
i = i.replace("万","")
i = float(i)*10000
test['bofang_num'][p] = i
print(i)
Series可以通过索引值来访问数值!
bool_index = test['bofang_num'].apply(lambda x:True if x.find("万")!=-1 else False)
test.loc[bool_index,"bofang_num"] = test['bofang_num'][bool_index].apply(lambda x:float(x.replace("万",""))*1000)
三.将表按照某一个特征值进行连接:
lis =["data_date_clean.csv","data_info_clean.csv","data_region_clean.csv","related_feature_table.csv"]
first = "Casualties_and_consequences.csv"
df1 = pd.read_csv(str(first),engine="python")
for li in lis:
df2 = pd.read_csv(str(li),engine="python")
df1 = pd.merge(df1,df2,on="eventid")```
四.删除某列下含有缺失值或者指定值的样本
先将指定的样本值都替换维缺失值nan,再统一的删掉nan的数据
#删除缺失值以及为-99的数据
# test_shuzhi_chose.head()
# 将值替换为nan
test_shuzhi_chose_ca = test_shuzhi_chose.replace([int('-99')],[np.nan])
test_shuzhi_chose_ca[test_shuzhi_chose_ca['nperpcap']==-99]
# 再统一删除nan的值
test_shuzhi_chose_ca = test_shuzhi_chose_ca.dropna()
五.通过Pandas将每行的数据保存成csv文件:
# 在每行数据中,
item = {}
df = DataFrame()
for .....
item['公司名称'] = html.xpath('//*[@id="wap_header_top"]/div[1]/div[1]/div[1]/text()')[0]
df = df.append(item,ignore_index=True)
df.to_csv('text1.csv')
六.通过Pandas将文本txt转换为列表字符串:
company = pd.read_table('房地产商.txt',engine='python',header=None)
#此处注意,其实用company.values,也能达到列表字符串,但是它会少了第一行
#但是需要有headers=none,表示此文件无索引列名!
for i in company[0]:
print(i)
七.修改df列名
#将col_1的列名修改为col_a
df = df.rename(columns={'col_1': 'col_a'})
八.根据key值进行合并
res = pd.merge(left, right, on='key')
#没有指定how的话默认使用inner方法
#how的方法还有:
#left
#只保留左表的所有数据
#right
#只保留右表的所有数据
#right
#只保留右表的所有数据
#inner
#只保留两个表中公共部分的信息
九.matplotlib中文标签乱码
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
# # 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
十.TypeError: ‘AxesSubplot’ object is not subscriptable
产生的原因可能是没有指定数据的类型,导致其子元素不能获取指定的下标,只要这样改:
p = data.boxplot(return_type='dict')
# 'flies'即为异常值的标签
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
十一. values方法
不管是Series,或是DataFrame,对于reshape和sort操作,都要先做.values!
kmodel.fit(data.values.reshape((len(data), 1)))
c = pd.DataFrame(kmodel.cluster_centers_).values.sort(0)
十二. rolling_mean
# python3中没有rolling_mean的方法,需要将其改为rolling.mean
w = pd.rolling_mean(c,2).iloc[1:] # 相邻两项求中点,作为边界点
十四. 将dict转化为dataframe
pd.DataFrame.from_dict(feature_data3['paras'], orient='columns')
十五. 将不同的dataframe的相同index进行连接
# data1为dataframe类型
data = [data1,data2,data3]
result = pd.concat(data)
十六. 使用dataframe来读取json文件
pd.DataFrame(json.loads(open('para1.json','r+').read()))
十七.