这里给您详细讲解一下“用Python进行微信好友信息分析”的完整实例教程,供您参考。
1. 准备工作
本教程需要以下准备工作:
- 微信登录PC端;
- 下载安装Python,并配置相关环境;
- 下载安装itchat和matplotlib两个Python库:
pip install itchat
和pip install matplotlib
;
2. 登录微信并获取好友信息
首先,我们需要使用itchat库登录微信并获取好友信息:
import itchat
# 登录微信
itchat.login()
# 获取好友信息列表
friends = itchat.get_friends(update=True)[0:]
这里get_friends()
函数可以获取到列表包含好友信息,包括好友昵称、性别、省份、城市等信息。
3. 数据清洗
获取好友信息后,我们需要进行初步的数据清洗工作,去除无关信息和异常值。这里只保留好友性别、所在省份和城市信息,其余的信息全部剔除。
# 数据清洗
cleaned_friends = []
for friend in friends:
data = {
'Sex': friend['Sex'],
'Province': friend['Province'],
'City': friend['City']
}
cleaned_friends.append(data)
4. 数据分析
接下来,我们对好友信息进行数据分析,使用matplotlib库绘制不同省份和城市的好友数量分布图:
import matplotlib.pyplot as plt
# 将数据转存到DataFrame中
df = pd.DataFrame(cleaned_friends)
# 根据省份和城市分组,并统计数量
province_count = df.groupby('Province').count()['Sex'].sort_values(ascending=False)[:10]
city_count = df.groupby('City').count()['Sex'].sort_values(ascending=False)[:10]
# 绘制省份分布柱状图
province_count.plot(kind='bar', rot=0)
plt.xlabel('Province')
plt.ylabel('Count')
plt.title('Top 10 Provinces')
plt.show()
# 绘制城市分布柱状图
city_count.plot(kind='bar', rot=0)
plt.xlabel('City')
plt.ylabel('Count')
plt.title('Top 10 Cities')
plt.show()
5. 示例
这里用两个示例说明如何进行微信好友信息分析:
示例1:统计好友性别分布
我们可以使用以下代码进行好友性别分布统计:
import pandas as pd
import matplotlib.pyplot as plt
# 获取好友信息列表
friends = itchat.get_friends(update=True)[0:]
# 数据清洗
cleaned_friends = []
for friend in friends:
data = {
'Sex': friend['Sex'],
}
cleaned_friends.append(data)
# 将数据转存到DataFrame中
df = pd.DataFrame(cleaned_friends)
# 统计数量并绘图
sex_count = df.groupby('Sex').count()['City']
sex_count.plot(kind='pie', autopct='%.2f%%')
plt.title('Gender Distribution')
plt.show()
示例2:统计好友地区分布
我们可以使用以下代码进行好友地区分布统计:
import pandas as pd
import matplotlib.pyplot as plt
# 获取好友信息列表
friends = itchat.get_friends(update=True)[0:]
# 数据清洗
cleaned_friends = []
for friend in friends:
data = {
'Province': friend['Province'],
'City': friend['City'],
}
cleaned_friends.append(data)
# 将数据转存到DataFrame中
df = pd.DataFrame(cleaned_friends)
# 根据省份和城市分组,并统计数量
province_count = df.groupby('Province').count()['City'].sort_values(ascending=False)[:10]
city_count = df.groupby('City').count()['Province'].sort_values(ascending=False)[:10]
# 绘制省份分布柱状图
province_count.plot(kind='bar', rot=0)
plt.xlabel('Province')
plt.ylabel('Count')
plt.title('Top 10 Provinces')
plt.show()
# 绘制城市分布柱状图
city_count.plot(kind='bar', rot=0)
plt.xlabel('City')
plt.ylabel('Count')
plt.title('Top 10 Cities')
plt.show()
以上是针对微信好友信息分析的完整实例教程。