python中数据分析库的基本使用(series&pandas)
Posted 是璇子鸭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中数据分析库的基本使用(series&pandas)相关的知识,希望对你有一定的参考价值。
series的使用
from pandas import Series
#1. Series对象
x = Series(
data=['a','b','fef'], # 索引默认从0开始
index=['aa','bb','cc'] # 索引不一定是数字,索引可重复
)
# print(x)
#2.根据索引取值
print(x['cc'])
#3. 修改
x['aa']='dwdw'
#4. 删除
x = x.drop('cc')
#5.添加
x.append((Series(data=['dwd'],index=['r'])))
#6.获取x的所有索引和值
print(x.index,x.values)
dataframe的基本使用
from pandas import DataFrame
df = DataFrame(
data={
'name':['张三','李四','王五'],
'age':[18,20,19],
'hobby':['唱歌','跳舞','rap']
},
index=['first','second','third']
)
print(df)
#1 获取name列数据
print(df['name'])
#2 df 想要筛选行列需要使用 loc-按标签选 iloc—按位置选 两个方法
# 遵循先行后列原则
# #3 筛选first行age列
df.loc['first','age'] #,分维度
#
# #4 只取行或列
print(df.loc[:,'age'])
#
# #5 筛选first行到thir行
print(df.loc['first':'third','name':'hobby'])
#
# #6 筛选不连续行列
print(df.loc[['first','third'],['name','hobby']])
# loc:如果知道列名使用loc 不知道列明用iloc
print(df.iloc[0:2,0:2]) #左闭右开
print(df.iloc[[0,2],[0,2]])
df写入csv
from pandas import DataFrame
df = DataFrame(
data=[
{'name':'张三','age':12},
{'name':'栗子','age':18},
{'name':'王五', 'age':15}
]
)
#1. 写到csv文件中
#不写入索引与列名(表头)
df.to_csv('哈哈.csv',index=False,header=False)
pandas的基本处理方法
import pandas as pd
1. 读取csv数据
df = pd.read_csv('数据分析data/data.csv')
print(df)
2. 去重
df.drop_duplicates(inplace=True) # inplace在原始数据上直接进行修改, 与赋值操作时一样的
print(df)
3 空值处理
df = pd.read_csv('数据分析data/data1.csv')
df.dropna(inplace=True) #删除空值
# 填充空值
df.fillna('Not provide', inplace=True)
print(df)
4 某列数据的字符串操作(替换、去空格、切割等等)
df = pd.read_csv('数据分析data/data2.csv')
# str: Series变为字符串属性之后,可用字符串的方法
# 将name列中的JIMI替换成TOM——str.replace strip()去首尾空格
df['name'] = df['name'].str.replace('JIMI','TOM').str.strip()
print(df)
5 筛选数据
df = pd.read_csv('数据分析data/data4.csv',sep='|')
print(df.columns)
#筛选comments大于等于10000的数据
print(df[df['comments']>=10000])
#筛选comments大于等于1000,小于等于10000的数据
print(df[(df['comments']>=1000) & (df['comments']<=10000)])
# 筛选comments小于等于1000或大于等于10000的数据
print(df[(df['comments']>=1000) | (df['comments']>=10000)])
# 筛选title中包含台电两字的数据 na=False:如果是空,直接是False
print(df[df['title'].str.contains('台电', na=False)])
6 数据合并
from pandas import DataFrame
import pandas as pd
df1 = pd.read_csv('数据分析data/data6-1.csv',sep='|')
df2 = pd.read_csv('数据分析data/data6-2.csv',sep='|')
df3 = pd.read_csv('数据分析data/data6-3.csv',sep='|')
df = pd.concat([df1,df2,df3])
#6.1 竖向数据合并
# # print(df) #可以发现索引重复了,故我们重置索引reset_index
df.reset_index(inplace=True, drop=True) #drop把原索引删掉,重新生成索引
print(df)
#6.2 横向数据合并
df1 = pd.read_csv('数据分析data/data7-1.csv',sep='|', names=['id','comments','title'])
df2 = pd.read_csv('数据分析data/data7-2.csv',sep='|',names=['id','comments','title'])
# # on:根据谁合并(公共列)
df = pd.merge(df1,df2,on='id')
print(df)
#6.3 新增列
df = pd.read_csv('数据分析data/data8.csv',sep='|')
df['totalPrice'] = df['num']*df['price']
print(df)
分组聚合
import pandas as pd
df = pd.read_csv('数据分析data\\groupby.csv')
#1 按address分组,求各城市人数
#res = df.groupby('address').count().reset_index() #按城市对所有列求个数
res1 = df.groupby('address')['id'].count().reset_index() #按城市对所有列求个数
#print(res1)
#2 按照address分组,求各城市的分数平均值
res2 = df.groupby('address')['score'].mean().reset_index()
#print(res2)
#3 根据address分组,求各城市的分数平均值、最大值、最小值、分数总和、中位数
# aggg:聚合运算
res3 = df.groupby('address')['score'].agg(['mean','max','min','sum','median']).reset_index()
print(res3)
#4 根据address分组,求各城市的分数平均值、[年龄最大值、最小值]
res4 = df.groupby('address').agg({'score':'mean','age':['max','min']}).reset_index()
print(res4)
import pandas as pd
#1 读取数据
df = pd.read_csv('D:\\python_project\\python爬虫\\chromedriver\\lianjia_data.csv')
#2 根据小区分组,求单价平均值(当前小区同时在售卖房源不能低于3套)
temp = df.groupby('community')['unit_price'].agg(['mean','count']).reset_index()
# print(temp)
#3 [['小区',3.4]]
result = [
[
value['community'],
round(value['mean']/10000,1)
]
if value['count'] >= 3 else [value['community'],0]
for index,value in temp.iterrows()
]
# print(result)
#4 根据小区均价进行排序
# 参数1: 要排序数据if value['count'] >= 3 else [value['community'],0]
# 参数2 key: 根据什么排序
# 参数3:reverse=True
result = sorted(result,key=lambda x:x[1],reverse = True)[0:10]
# print(result)
以上是关于python中数据分析库的基本使用(series&pandas)的主要内容,如果未能解决你的问题,请参考以下文章
python中数据分析库的基本使用(series&pandas)