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)

Pandas库的介绍

python中pandas库的使用

python学习——pandas库的使用,仅需要这一篇就足够了

pandas库的使用---对50w的数据进行处理

Pandas库的使用--Series