导入相应数据分析模块¶
In [1]:
import pandas as pd
import numpy as np
# 生成示例数据
np.random.seed(0)
companies = ['梦想翅膀科技有限公司', '天涯科技有限公司', '梦飞扬科技有限公司',
'云上科技有限公司', '智慧星辰科技有限公司', '创造无限科技有限公司',
'灵感科技有限公司', '未来驰骋科技有限公司', '创新翅膀科技有限公司', '奇思妙想科技有限公司']
prices = np.random.randint(10, 100, size=10)
volumes = np.random.randint(1000, 10000, size=10)
changes = np.random.uniform(-1, 1, size=10)
# 构造DataFrame对象
data = {
'Company': companies,
'Price': prices,
'Volume': volumes,
'Change': changes
}
df = pd.DataFrame(data)
# 显示DataFrame
print(df)
Company Price Volume Change 0 梦想翅膀科技有限公司 54 7744 0.296344 1 天涯科技有限公司 57 4468 -0.263517 2 梦飞扬科技有限公司 74 1705 0.914310 3 云上科技有限公司 77 3599 -0.719298 4 智慧星辰科技有限公司 77 3222 0.740175 5 创造无限科技有限公司 19 8768 -0.052784 6 灵感科技有限公司 93 3897 0.601822 7 未来驰骋科技有限公司 31 1537 0.040955 8 创新翅膀科技有限公司 46 7216 0.357759 9 奇思妙想科技有限公司 97 7921 0.441265
查看df¶
In [2]:
df
Out[2]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 |
| 1 | 天涯科技有限公司 | 57 | 4468 | -0.263517 |
| 2 | 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 |
| 3 | 云上科技有限公司 | 77 | 3599 | -0.719298 |
| 4 | 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 |
| 5 | 创造无限科技有限公司 | 19 | 8768 | -0.052784 |
| 6 | 灵感科技有限公司 | 93 | 3897 | 0.601822 |
| 7 | 未来驰骋科技有限公司 | 31 | 1537 | 0.040955 |
| 8 | 创新翅膀科技有限公司 | 46 | 7216 | 0.357759 |
| 9 | 奇思妙想科技有限公司 | 97 | 7921 | 0.441265 |
查看df前5行¶
In [3]:
df.head()
Out[3]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 |
| 1 | 天涯科技有限公司 | 57 | 4468 | -0.263517 |
| 2 | 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 |
| 3 | 云上科技有限公司 | 77 | 3599 | -0.719298 |
| 4 | 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 |
查看df后5行¶
In [4]:
df.tail()
Out[4]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 5 | 创造无限科技有限公司 | 19 | 8768 | -0.052784 |
| 6 | 灵感科技有限公司 | 93 | 3897 | 0.601822 |
| 7 | 未来驰骋科技有限公司 | 31 | 1537 | 0.040955 |
| 8 | 创新翅膀科技有限公司 | 46 | 7216 | 0.357759 |
| 9 | 奇思妙想科技有限公司 | 97 | 7921 | 0.441265 |
查看行和列的索引值¶
In [5]:
df.columns
Out[5]:
Index(['Company', 'Price', 'Volume', 'Change'], dtype='object')
In [6]:
df.index
Out[6]:
RangeIndex(start=0, stop=10, step=1)
分别查看Company、Price列的值¶
In [7]:
df[['Company','Price']]
Out[7]:
| Company | Price | |
|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 |
| 1 | 天涯科技有限公司 | 57 |
| 2 | 梦飞扬科技有限公司 | 74 |
| 3 | 云上科技有限公司 | 77 |
| 4 | 智慧星辰科技有限公司 | 77 |
| 5 | 创造无限科技有限公司 | 19 |
| 6 | 灵感科技有限公司 | 93 |
| 7 | 未来驰骋科技有限公司 | 31 |
| 8 | 创新翅膀科技有限公司 | 46 |
| 9 | 奇思妙想科技有限公司 | 97 |
连续切片,取行 0 到 5行,列0到5 列,左闭右开,所有数据¶
In [8]:
df.iloc[:5,0:5]
Out[8]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 |
| 1 | 天涯科技有限公司 | 57 | 4468 | -0.263517 |
| 2 | 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 |
| 3 | 云上科技有限公司 | 77 | 3599 | -0.719298 |
| 4 | 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 |
筛选出 第1到 4 行,第 1、3列的所有数据¶
In [9]:
df.iloc[1:4,[1,3]]
Out[9]:
| Price | Change | |
|---|---|---|
| 1 | 57 | -0.263517 |
| 2 | 74 | 0.914310 |
| 3 | 77 | -0.719298 |
分别筛选出Company列值为" 天涯科技有限公司"和不为" 云上科技有限公司 "的所有数据¶
In [10]:
df.loc[df["Company"] != "天涯科技有限公司"]
Out[10]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 |
| 2 | 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 |
| 3 | 云上科技有限公司 | 77 | 3599 | -0.719298 |
| 4 | 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 |
| 5 | 创造无限科技有限公司 | 19 | 8768 | -0.052784 |
| 6 | 灵感科技有限公司 | 93 | 3897 | 0.601822 |
| 7 | 未来驰骋科技有限公司 | 31 | 1537 | 0.040955 |
| 8 | 创新翅膀科技有限公司 | 46 | 7216 | 0.357759 |
| 9 | 奇思妙想科技有限公司 | 97 | 7921 | 0.441265 |
In [11]:
df.loc[df["Company"] == "天涯科技有限公司"]
Out[11]:
| Company | Price | Volume | Change | |
|---|---|---|---|---|
| 1 | 天涯科技有限公司 | 57 | 4468 | -0.263517 |
以Company分组,求每一种Price所有公司的个数¶
In [12]:
df.groupby('Company').count()
Out[12]:
| Price | Volume | Change | |
|---|---|---|---|
| Company | |||
| 云上科技有限公司 | 1 | 1 | 1 |
| 创新翅膀科技有限公司 | 1 | 1 | 1 |
| 创造无限科技有限公司 | 1 | 1 | 1 |
| 天涯科技有限公司 | 1 | 1 | 1 |
| 奇思妙想科技有限公司 | 1 | 1 | 1 |
| 智慧星辰科技有限公司 | 1 | 1 | 1 |
| 未来驰骋科技有限公司 | 1 | 1 | 1 |
| 梦想翅膀科技有限公司 | 1 | 1 | 1 |
| 梦飞扬科技有限公司 | 1 | 1 | 1 |
| 灵感科技有限公司 | 1 | 1 | 1 |
求每个公司的Change字段值,占全部公司的Change之和比,并增加新的字段change_rate¶
In [13]:
df['change_rate']=df['Change']/ df['Change'].sum()*100
df
Out[13]:
| Company | Price | Volume | Change | change_rate | |
|---|---|---|---|---|---|
| 0 | 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 | 12.572760 |
| 1 | 天涯科技有限公司 | 57 | 4468 | -0.263517 | -11.180040 |
| 2 | 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 | 38.790777 |
| 3 | 云上科技有限公司 | 77 | 3599 | -0.719298 | -30.517151 |
| 4 | 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 | 31.402845 |
| 5 | 创造无限科技有限公司 | 19 | 8768 | -0.052784 | -2.239424 |
| 6 | 灵感科技有限公司 | 93 | 3897 | 0.601822 | 25.533042 |
| 7 | 未来驰骋科技有限公司 | 31 | 1537 | 0.040955 | 1.737566 |
| 8 | 创新翅膀科技有限公司 | 46 | 7216 | 0.357759 | 15.178383 |
| 9 | 奇思妙想科技有限公司 | 97 | 7921 | 0.441265 | 18.721242 |
求Company列不同值的和¶
In [14]:
df.Company.value_counts()
Out[14]:
Company 梦想翅膀科技有限公司 1 天涯科技有限公司 1 梦飞扬科技有限公司 1 云上科技有限公司 1 智慧星辰科技有限公司 1 创造无限科技有限公司 1 灵感科技有限公司 1 未来驰骋科技有限公司 1 创新翅膀科技有限公司 1 奇思妙想科技有限公司 1 Name: count, dtype: int64
获取每一种Company对应的Price¶
In [15]:
df.groupby('Company').Price.agg(['count'])
Out[15]:
| count | |
|---|---|
| Company | |
| 云上科技有限公司 | 1 |
| 创新翅膀科技有限公司 | 1 |
| 创造无限科技有限公司 | 1 |
| 天涯科技有限公司 | 1 |
| 奇思妙想科技有限公司 | 1 |
| 智慧星辰科技有限公司 | 1 |
| 未来驰骋科技有限公司 | 1 |
| 梦想翅膀科技有限公司 | 1 |
| 梦飞扬科技有限公司 | 1 |
| 灵感科技有限公司 | 1 |
设定Company列为行索引¶
In [16]:
df.set_index(["Company"])
Out[16]:
| Price | Volume | Change | change_rate | |
|---|---|---|---|---|
| Company | ||||
| 梦想翅膀科技有限公司 | 54 | 7744 | 0.296344 | 12.572760 |
| 天涯科技有限公司 | 57 | 4468 | -0.263517 | -11.180040 |
| 梦飞扬科技有限公司 | 74 | 1705 | 0.914310 | 38.790777 |
| 云上科技有限公司 | 77 | 3599 | -0.719298 | -30.517151 |
| 智慧星辰科技有限公司 | 77 | 3222 | 0.740175 | 31.402845 |
| 创造无限科技有限公司 | 19 | 8768 | -0.052784 | -2.239424 |
| 灵感科技有限公司 | 93 | 3897 | 0.601822 | 25.533042 |
| 未来驰骋科技有限公司 | 31 | 1537 | 0.040955 | 1.737566 |
| 创新翅膀科技有限公司 | 46 | 7216 | 0.357759 | 15.178383 |
| 奇思妙想科技有限公司 | 97 | 7921 | 0.441265 | 18.721242 |
In [ ]:
In [ ]:
In [ ]: