如何对log.logi文件中某一列数据每隔固定行数读取数据并画图
时间: 2023-07-15 14:13:32 浏览: 86
假设你要读取log.logi文件中第二列每隔10行的数据并画图,可以按照以下步骤操作:
1. 使用Python的pandas库读取log.logi文件,将数据存储为一个DataFrame对象。
```python
import pandas as pd
df = pd.read_csv('log.logi', sep='\s+', header=None)
```
其中,sep参数指定了列之间的分隔符为任意空格(\s+),header=None表示没有列名。
2. 提取第二列数据并按照每隔10行的规律进行采样,将结果存储为一个新的DataFrame对象。
```python
col2 = df[1] # 提取第二列数据
sampled = col2.iloc[::10] # 每隔10行进行采样
```
其中,iloc[::10]表示按照每隔10行的规律进行采样。
3. 使用Matplotlib库绘制折线图。
```python
import matplotlib.pyplot as plt
plt.plot(sampled)
plt.show()
```
上述代码将绘制出样本数据的折线图。你可以根据需要对图像进行进一步的美化、调整坐标轴等操作。
相关问题
如何对log.logi文件中某一列数据每隔固定行数读取数据
可以使用Python中的pandas库来读取log.logi文件,并且只读取指定列中每隔固定行数的数据。
假设log.logi文件中包含多个列,我们要读取第3列(假设该列为数据列)中每隔10行的数据,可以按照以下步骤进行操作:
1. 导入pandas库
```python
import pandas as pd
```
2. 使用pandas的read_csv函数读取log.logi文件
```python
df = pd.read_csv('log.logi', header=None, delimiter='\t')
```
其中,header=None表示不将第一行作为列名,delimiter='\t'表示采用制表符分隔符。
3. 选取第3列数据
```python
data_col = df.iloc[:, 2]
```
其中,df.iloc[:, 2]表示选取所有行的第3列数据。
4. 每隔10行读取数据
```python
data_selected = data_col[::10]
```
其中,data_col[::10]表示从第0行开始,每隔10行选取一行数据。这样就可以得到第3列中每隔10行的数据了。
完整代码如下:
```python
import pandas as pd
# 读取log.logi文件
df = pd.read_csv('log.logi', header=None, delimiter='\t')
# 选取第3列数据
data_col = df.iloc[:, 2]
# 每隔10行读取数据
data_selected = data_col[::10]
```
使用Java unit test测试下面代码public int onStartCommand(Intent intent, int flags, int startId) { if (intent != null) { String action = intent.getAction(); LogUtils.logI(TAG, "onStartCommand: action " + action); if (Config.ACTION_START_MUSIC.equals(action)) { boolean fromRecovery = intent.getBooleanExtra(Config.KEY_FROM_RECOVERY, false); Log.i(TAG, "onStartCommand: fromRecovery " + fromRecovery); if (fromRecovery) { mHasShowUsbTab = false; checkBootAnim(); } } else if (Config.ACTION_MUSIC_CMD.equals(action)) { mPlayer.change(); } else if ("com.music.action.play_first".equals(action)) { mPlayer.play(0, PlayParam.FROM_UNDEFINE); } else if (Config.ACTION_CLOSE_VIDEO.equals(action)) { EventBus.getDefault().post(new Event.Finish()); } } return START_STICKY; }
可以使用JUnit框架编写测试用例,测试onStartCommand()方法的不同分支。具体步骤如下:
1. 创建一个测试类,导入需要的包:
```java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import android.content.Intent;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class MyServiceTest {
@Mock
private MyService mService;
@Mock
private Intent mMockIntent;
@Test
public void testOnStartCommand_ActionStartMusic_FromRecovery() {
// 设置Intent的Action和参数
when(mMockIntent.getAction()).thenReturn(Config.ACTION_START_MUSIC);
when(mMockIntent.getBooleanExtra(Config.KEY_FROM_RECOVERY, false)).thenReturn(true);
// 调用onStartCommand()方法
mService.onStartCommand(mMockIntent, 0, 0);
// 验证相关的方法是否被调用
verify(mService).checkBootAnim();
}
@Test
public void testOnStartCommand_ActionStartMusic_NotFromRecovery() {
// 设置Intent的Action和参数
when(mMockIntent.getAction()).thenReturn(Config.ACTION_START_MUSIC);
when(mMockIntent.getBooleanExtra(Config.KEY_FROM_RECOVERY, false)).thenReturn(false);
// 调用onStartCommand()方法
mService.onStartCommand(mMockIntent, 0, 0);
// 验证相关的方法是否被调用
verify(mService, never()).checkBootAnim();
}
// TODO: 添加其他测试用例
}
```
2. 在测试方法中,设置模拟的Intent对象的Action和参数,并调用onStartCommand()方法。
3. 验证onStartCommand()方法中涉及到的其他方法是否被正确地调用。
4. 运行测试用例,查看测试结果是否符合预期。
需要注意的是,由于onStartCommand()方法中涉及到了一些外部依赖(如LogUtils、mPlayer、EventBus等),因此在测试中需要使用Mockito等框架来模拟这些依赖,以确保测试的独立性和可重复性。
阅读全文