数据分析day4之pandas

pandas的常用数据类型

1. Series 一维,带标签数组
2. DataFrame 二维, Series 容器

 pandasDataFrame

 对于这一组电影数据,如果我们想ratingruntime的分布情况,应该如何呈现数据?

import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:/WINDOWS/Fonts/方正粗黑宋简体.ttf")

file_path = "IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
#rating,runtime分布情况
#选择图形,直方图
#准备数据
runtime_data = df["Rating"].values
max_runtime = runtime_data.max()
min_runtime = runtime_data.min()
print(min_runtime)
#计算组数
print(max_runtime-min_runtime)
num_bin = int((max_runtime-min_runtime)//0.5)
#设置图形的大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(runtime_data,num_bin)
_x = [min_runtime]
i = min_runtime
while i<=max_runtime+0.5:
    i = i+0.5
    _x.append(i)
plt.xticks(_x)
plt.show()

 pandas之字符串方法

 缺失数据的处理

对于NaN的数据,在numpy中我们是如何处理的?

pandas中我们处理起来非常容易

判断数据是否为NaNpd.isnull(df),pd.notnull(df)

处理方式1:删除NaN所在的行列dropna (axis=0, how='any', inplace=False)

处理方式2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)

处理为0的数据:t[t==0]=np.nan

当然并不是每次为0的数据都需要处理

计算平均值等情况,nan是不参与计算的,但是0

import pandas as pd

t1 = pd.Series([1,2,354,523,2],index=list('abcde'))
print(t1)

temp_dict = {"NAME":"DING","AGE":18,"ADRESS":"HANGZHOU"}
t2 = pd.Series(temp_dict)
print(t2)

print(t1.where(t1>10))
print(t1.mask(t1>10))
import pandas as pd
df = pd.read_csv("./dogNames2.csv")
# print(df.head())
# print(df.info())

#dataFrame的排序方法
df = df.sort_values(by="Count_AnimalName",ascending=False)
#pandas取行或者列的注意点:
# - 方括号写数组,表示取行,对行进行操作
# - 写字符串,表示的去列索引,对列进行操作
print(df.head(5))
print(df[:5])
print(df[:5]["Row_Labels"])

print(df[(df["Count_AnimalName"]>700) & (df["Row_Labels"].str.len()>4)])
#下载pymongo读取外部数据
from pymongo import MongoClient
import pandas as pd

client =  MongoClient()
collection = client["douban"]["tv1"]
data = list(collection.find())
print(data)

t1 = data[0]
t1 = pd.Series(t1)
print(t1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,我会尽可能详细地回答。首先,需要明确一点的是,这个问题涉及到的技术领域比较广泛,包括爬虫、数据分析、numpy和pandas等知识,因此需要有一定的基础才能进行操作。下面我将分步骤讲解具体实现方法: 1. 爬取朋友圈信息 首先需要登录微信,并且安装itchat这个库。itchat是一个基于微信协议的Python库,可以实现登录微信、发送消息、接收消息等功能。在安装完成itchat之后,可以使用以下代码登录微信: ``` import itchat itchat.auto_login(hotReload=True) ``` 登录成功之后,可以使用以下代码获取朋友圈信息: ``` friends = itchat.get_friends(update=True) for friend in friends: print(friend['NickName']) for m in itchat.get_moments(): print(m['Text']) ``` 2. 数据分析 获取到朋友圈信息之后,需要进行基本的数据分析。这里涉及到numpy和pandas两个库。numpy是Python中非常重要的一个科学计算库,它提供了高性能的多维数组对象,并且可以进行广播、数学运算、逻辑运算等操作。pandas则是建立在numpy之上的一个数据处理库,可以方便地进行数据清洗、分组、聚合等操作。下面是一些常用的numpy和pandas操作: ``` import numpy as np import pandas as pd # 创建一个numpy数组 a = np.array([1, 2, 3, 4, 5]) # 对numpy数组进行基本的数学运算 b = np.sin(a) # 创建一个pandas DataFrame df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 'Age': [25, 30, 35, 40, 45], 'Gender': ['Female', 'Male', 'Male', 'Male', 'Female']}) # 对pandas DataFrame进行基本的数据清洗和分析 df.dropna() # 删除缺失值 df.groupby('Gender').mean() # 按照性别分组计算平均年龄 ``` 以上是一些numpy和pandas的基本操作,可以根据实际需要进行调整。 3. 完整代码 下面是一个完整的代码示例,包括登录微信、获取朋友圈信息、数据分析等操作: ``` import itchat import pandas as pd # 登录微信 itchat.auto_login(hotReload=True) # 获取朋友列表 friends = itchat.get_friends(update=True) # 获取朋友圈信息 moments = [] for m in itchat.get_moments(): moment = {} moment['UserName'] = m['UserName'] moment['NickName'] = m['User']['NickName'] moment['Content'] = m['Content'] moment['CreateTime'] = m['CreateTime'] moments.append(moment) # 将朋友圈信息转化为pandas DataFrame df = pd.DataFrame(moments) # 对DataFrame进行基本的数据分析 df['CreateTime'] = pd.to_datetime(df['CreateTime'], unit='s') df['Year'] = df['CreateTime'].dt.year df['Month'] = df['CreateTime'].dt.month df['Day'] = df['CreateTime'].dt.day df.groupby(['Year', 'Month'])['Content'].count() # 退出微信登录 itchat.logout() ``` 以上代码可以实现登录微信、获取朋友圈信息、将信息转化为DataFrame、进行基本的数据分析等操作。需要注意的是,由于微信的反爬虫机制比较严格,因此在实际操作中需要注意不要频繁地爬取数据,以免被微信封禁账号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值