数据分析基础14问

1.numpy,pandas,matplotlib,pyecharts,sklearn分别是用来干什么的?
numpy是Python中用于进行科学计算的包,它包含了许多用于处理多维数组及其运算的函数和工具。使用numpy可以高效地进行向量操作、矩阵运算、随机数生成等科学计算任务,这些在处理数据集时非常有用。

pandas是一个专门针对数据分析而设计的Python库,它提供了一种灵活的数据结构DataFrame和Series,可用于高效地处理大型数据集。通过pandas,我们可以简化数据的清洗和预处理、数据的分组和聚合、数据的变换和合并等操作,进而为数据分析和建模提供快捷之路。

matplotlib是Python中最流行的绘图库之一,它提供了各种各样的绘图工具,能够生成高质量的2D和3D图形。它支持线图、散点图、柱形图、饼图、直方图等多种类型的图表,可用于可视化数据,以便更好地理解数据的特征和趋势,从而更好地进行数据分析和决策。

pyecharts是一个基于Python的数据可视化库,它提供了丰富的图表类型和交互功能,可以用于快速创建各种各样的图表。pyecharts支持多种渲染方式,包括在Jupyter Notebook中展示、生成HTML文件、生成图片等。通过pyecharts,可以方便地实现数据的可视化展示,帮助用户更好地理解和分析数据。

sklearn(全称为Scikit-learn)是一个强大的Python机器学习库,提供了丰富的机器学习算法和工具,涵盖了常见的分类、回归、聚类、降维等任务。sklearn具有简单易用的API接口,可以帮助用户快速构建和训练机器学习模型,并提供了丰富的评估和调优方法。通过sklearn,用户可以轻松地进行数据预处理、特征工程、模型选择和评估等机器学习任务,是进行机器学习和数据挖掘的常用工具之一。
2.numpy和pandas有什么区别?
1.数据结构:numpy主要处理的是数值型的数组和矩阵,是一种支持多维数组运算的基础科学计算库;而pandas则是在numpy基础上发展而来,专门用于处理表格型或异质性数据,其中最主要的数据结构是DataFrame和Series。

2.功能:numpy提供了丰富的数组操作方法,例如数组的创建、拼接、切片、索引、聚合等等。而pandas则更偏向于数据分析应用,提供了数据过滤、清洗、转换、合并、统计等功能。

3.性能:numpy底层使用C语言进行优化,因此在数据运算和计算密集型任务上相对较快。而pandas则是基于numpy实现的,虽然也很快,但在处理大量数据时会比numpy慢一些。

4.适用场景:numpy适用于数值计算、科学计算、线性代数、随机数生成等高性能计算场景。而pandas适用于数据预处理、数据分析、数据可视化等数据科学领域。

3.如何用 pandas 导入和导出 excel 和 csv 文件?
导入库

import numpy as np
import pandas as pd
import matplotlib as plt

导入文件

df=pd.DataFrame(pd.read_csv('文件名.csv',header=1))
df=pd.DataFrame(pd.read_excel('文件名.xlsx'))

导出文件

df.to_csv('文件名.csv')
df.to_excel('文件名.xlsx', sheet_name='bluewhale_cc')

4. 如何创建 Dataframe 和 array?

df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
               "date":pd.date_range('20130102', periods=6),
               "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
               "age":[23,44,54,32,34,32],
               "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
               "price":[1200,np.nan,2133,5433,np.nan,4432]},
               columns =['id','date','city','category','age','price'])

score = np.array([[80, 89, 86, 67, 79],[78, 97, 89, 67, 81],[90, 94, 78, 67, 74],[91, 91, 90, 67, 69],[76, 87, 75, 67, 86],[70, 79, 84, 67, 84],[94, 92, 93, 67, 64],[86, 85, 83, 67, 80]])

5. 如何提取 Dataframe 某一行某一列的数据?

df.iloc[[行],[列]]

df.at[行,列]

6. 如何删除某一列的数据?

df.pop("id")
#drop函数不更改原始数据,将其存放在别处
df=df.drop("id",axis=1)

7. 如何处理不合法的日期格式?

#假设有一个日期格式不正确的列表
dates = ['2022-01-01', '2022-01-02', '2022/01/03', '2022-01-04']

#1.使用pandas的to_datetime()函数转换日期格式(当errors='coerce'时,会将不合法的日期格式转换为NaT(Not a Time)值。如果errors='raise',则会引发ValueError异常)
converted_dates = pd.to_datetime(dates, errors='coerce')

#2.使用numpy的datetime64函数转换日期格式(numpy的datetime64类型也可以用于处理日期和时间数据。不同于pandas,numpy在处理不合法的日期格式时,会将其视为无效值,并将其替换为NaT值。)
converted_dates = np.array(dates, dtype=np.datetime64)

8. 如何检查、删除和填充数据中的缺失值?

# 检查DataFrame中是否存在缺失值
print(df.isnull())

# 删除包含缺失值的行
df.dropna(inplace=True)
df.dropna(how='any')

# 删除包含缺失值的列
df.dropna(axis=1, inplace=True)

#使用数字0填充数据表中空值
df.fillna(value=0)

#使用price均值对NA进行填充
df['price'].fillna(df['price'].mean())

9. 如何求某一列的和、平均值、最大值、最小值?

#求price列的和
df['price'].sum()

#求price列的平均值
df['price'].mean()

#求price列的最大值
df['price'].max()

#求price列的最小值
df['price'].min()

10. 如何合并两个 Dataframe?

#merge函数的inner方式
df_inner=pd.merge(df,df1,how='inner')

#其他数据表匹配模式
df_left=pd.merge(df,df1,how='left')
df_right=pd.merge(df,df1,how='right')
df_outer=pd.merge(df,df1,how='outer')

11. 如何给某一列数据排序?

#运用sort_values函数和sort_index函数

#一些参数
#by:指定列名或列名列表来排序
#axis:指定排序轴,0表示按列排序,1表示按行排序(默认为0)
#ascending:指定排序方式,True表示升序排序,False表示降序排序(默认为True)#inplace:指定是否原地修改DataFrame数据,True表示原地修改,False表示不原地修改(默认为False)
#kind:指定排序算法,包括"quicksort"、"mergesort"和"heapsort"(默认为"quicksort")
#na_position:指定NaN值排序的位置,包括"last"和"first"(默认为"last")

#按特定列的值排序
df_inner.sort_values(by=['age'])

#按索引列排序
df_inner.sort_index()

12. 如何实现 Dataframe 的分组求和?

#对根据city分组的ID列进行求和
df.groupby("city")["id"].sum()

13. 如何用 matplotlib、pyecharts 画折线图、饼图、柱状图、折线图、散点图、雷达图、热力图?

1.折线图

# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制折线图
plt.plot(x, y)
# 添加标题和坐标轴标签
plt.title('Line Chart')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()

2.饼图

# 准备数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
# 添加标题
plt.title('Pie Chart')
# 显示图形
plt.show()

3.柱状图

# 准备数据
x = ['A', 'B', 'C', 'D']
y = [20, 35, 30, 25]
# 绘制柱状图
plt.bar(x, y)
# 添加标题和坐标轴标签
plt.title('Bar Chart')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()

4.散点图

# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制散点图
plt.scatter(x, y)
# 添加标题和坐标轴标签
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()

5.雷达图

# 准备数据
labels = ['A', 'B', 'C', 'D', 'E']
data = [30, 50, 45, 60, 40]

# 绘制雷达图
theta = np.linspace(0, 2 * np.pi, len(labels), endpoint=False)
data = np.concatenate((data, [data[0]]))
theta = np.concatenate((theta, [theta[0]]))

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(theta, data)

ax.fill(theta, data, alpha=0.25)

ax.set_xticks(theta[:-1])
ax.set_xticklabels(labels)

ax.set_title('Radar Chart')

# 显示图形
plt.show()

6.热力图

# 准备数据
data = np.random.rand(6, 6)
# 绘制热力图
plt.imshow(data, cmap='hot', interpolation='nearest')
# 添加颜色条
plt.colorbar()
# 添加标题
plt.title('Heatmap')
# 显示图形
plt.show()

14. 如何制作数据大屏?

# 准备数据
x = np.arange(1, 11)
y1 = np.random.randint(10, 50, size=(10,))
y2 = np.random.randint(20, 60, size=(10,))

# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6), sharex=True)

# 绘制折线图
ax1.plot(x, y1, marker='o', linestyle='-', color='b')
ax1.plot(x, y2, marker='s', linestyle='--', color='r')
ax1.set_title('Line Chart')
ax1.legend(['Line 1', 'Line 2'])

# 绘制柱状图
ax2.bar(x, y1, color='b', alpha=0.7)
ax2.bar(x, y2, color='r', alpha=0.7, bottom=y1)
ax2.set_title('Bar Chart')
ax2.legend(['Bar 1', 'Bar 2'])

# 设置共享横轴标签
plt.xlabel('X-axis')

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值